微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
本节目录
一、加性高斯白噪声信道(AWGN)
1、awgn(x,snr)
2、awgn(x,snr,sigpower)
3、awgn(x,snr,'measured')
4、awgn(x,snr,…,state)
5、randn函数
6、各类函数Matlab仿真验证
二、加性高斯白噪声信道(AWGN)的Matlab仿真
三、Matlab源码
1、各类函数Matlab仿真源码
2、加性高斯白噪声信道(AWGN)的Matlab仿真源码
本节内容
信道是将来自发送端的信号传送到接收端的物理媒质,可以分为有线信道和无线信道。信道的质量影响信号的接收和解调,体现在两个方面:一是信号在实际信道中传输时,由于信道特性不理想会引起信号波形的失真;二是信道中存在各种噪声会干扰信号的传输。
信道通常可以分为加性高斯白噪声信道AWGN、多径瑞利Rayleigh衰落信道和莱斯Rician衰落信道。
一、加性高斯白噪声信道(AWGN)
加性高斯白噪声(Additive White Gaussian Noise,AWGN)是最常见的一种噪声,存在与各种传输媒质中。具体表现为信号围绕平均值的一种随机波动过程,均值为0,方差是噪声功率的大小。
Matlab提供了agwn函数来实现在输入信号中叠加一定强度的高斯白噪声信号,噪声信号的强度由输入参数确定。
1、awgn(x,snr)
函数awgn(x,snr),把加性高斯白噪声叠加到输入信号x中,snr以dB的形式制定噪声的功率。若信号x的功率假设为0dBW,噪声的功率实际上为-snrdBW。
2、awgn(x,snr,sigpower)
函数awgn(x,snr,sigpower),把加性高斯白噪声叠加到输入信号x中,snr以dBW的形式制定噪声的功率,输入信号的功率为sigpower,单位dBW。
3、awgn(x,snr,‘measured’)
awgn(x,snr,‘measured’),首先计算输入x信号的功率,按照snr添加相应功率的高斯白噪声。
4、awgn(x,snr,…,state)
Matlab可以将随机数种子设置为state,其中…支持sigpower或’measured’。随机数是根据一定算法产生的伪随机数,把产生的伪随机数的初始条件(即随机数种子)设为一致,也就是前后两次调用state相同,则产生的加性高斯白噪声结果也一致。
5、randn函数
randn(n),返还一个n行n列的随机矩阵,其中每一行和每一列都服从均值为0,方差为1的正态分布。
randn(m,n),返还一个m行n列的随机矩阵,其中每一行和每一列都服从均值为0,方差为1的正态分布。
randn(‘state’,seed)把随机数种子设定为seed,相同的state产生相同的随机数序列。
6、各类函数Matlab仿真验证
信号x和叠加awgn的信号y1
信号x和叠加awgn的信号y2
信号x和叠加awgn的信号y3
随机数序列y4,y5,y6
二、加性高斯白噪声信道(AWGN)的Matlab仿真
matlab代码示例:
对正交相移键控(QPDK)调制的基带数字通信系统
通过AWGN信号的误符号率SER和误比特率BER进行仿真验证,
发射端信息比特采用Gray编码,
基带脉冲采用矩阵脉冲,
仿真每个脉冲的抽样点数为10,
接收端采用匹配滤波器进行相干解调。
三、Matlab源码
1、各类函数Matlab仿真源码
clear all;
clc;
t=0:0.001:10;
x=sin(2*pi*t);
snr=20;
y1=awgn(x,snr);
y2=awgn(x,snr,10);
y3=awgn(x,snr,'measured');
x1=ones(1,10);
y4=awgn(x1,snr,'measured',5);
y5=awgn(x1,snr,'measured',10);
y6=awgn(x1,snr,'measured',5);
subplot(2,1,1);
plot(t,x);
title('信号x');
axis([0 10 -2 2]);
subplot(2,1,2);
plot(t,y1);
title('叠加awgn的信号y1');
axis([0 10 -2 2]);
figure;
subplot(2,1,1);
plot(t,x);
title('信号x');
axis([0 10 -2 2]);
subplot(2,1,2);
plot(t,y2);
title('叠加awgn的信号y2');
axis([0 10 -2 2]);
figure;
subplot(2,1,1);
plot(t,x);
title('信号x');
axis([0 10 -2 2]);
subplot(2,1,2);
plot(t,y3);
title('叠加awgn的信号y3');
axis([0 10 -2 2]);
2、加性高斯白噪声信道(AWGN)的Matlab仿真源码
clear all;
clc;
%矩阵脉冲的抽样点数
n_samp=10;
%传输的符合数
num_symb=200000;
%QPDK的符合类型数
M=4;
%SNR的范围
SNR=-3:3;
%Gray编码格式
grayencod=[0 1 3 2]
for ii=1:length(SNR)
%产生发送符合
msg=randsrc(1,num_symb,[0:3])
%进行Gray编码映射
msg_gr=grayencod(msg+1);
%进行QPSK调制
msg_tx=pskmod(msg_gr,M);
%矩形脉冲成形
msg_tx=rectpulse(msg_tx,n_samp);
%通过awgn信道
msg_rx=awgn(msg_tx,SNR(ii),'measured');
%匹配滤波相关解调
msg_rx_down=intdump(msg_rx,n_samp);
%QPSK解调
msg_gr_demod=pskdemod(msg_rx_down,M);
[dummp graydecod]=sort(grayencod);
graydecod=graydecod-1;
%Gray编码逆映射
msg_demod=graydecod(msg_gr_demod+1);
%计算BER
[error_bit BER(ii)]=biterr(msg,msg_demod,log2(M));
%计算SER
[error_sym SER(ii)]=symerr(msg,msg_demod);
end
%画出发送信号的星座图
scatterplot(msg_tx(1:100));
title('发射信号星座图');
xlabel('同相分量');
ylabel('正交分量');
%画出接收信号的星座图
scatterplot(msg_rx(1:100));
title('接收信号星座图');
xlabel('同相分量');
ylabel('正交分量');
figure;
%画出BER和SER随SNR变换的曲线
semilogy(SNR,BER,'-r*',SNR,SER,'-r*')
legend('BER','SER');
title('QPSK在awgn信道下的性能');
xlabel('信噪比(dB)');
ylabel('误符号率和误比特率');