MATLAB 与 FPGA无线通信、图像处理、数字信号处理(数字滤波器)、信道编码系列
加性高斯白噪声(Additive White Gaussian Noise)
awgn函数向信号中添加高斯白噪声
向信号“X”添加高斯白噪声,信噪比大小为“SNR”,单位是dB;信号“X”的功率假定为 0 dBW;如果“X”是复数,则添加的是复高斯白噪声;
Example 1:
X = sqrt(2)*sin(0:pi/8:6*pi);% 设定一输入信号X
% 假定X的功率为0 dBW,加入高斯白噪声,加入后信噪比SNR=10 dB
Y = awgn(X,10); % 等价为2中的Y = awgn(X,10,0);
当参数“SIGPOWER”是一个数值的时候,代表输入信号“X”的功率,单位是dBW;当参数“SIGPOWER”是“measured”的时候,在添加噪声前会测量(计算)输入信号“X”的功率;
Example 2:
X = sqrt(2)*sin(0:pi/8:6*pi); % 设定一输入信号X
% 设定X的功率为5 dBW,加入高斯白噪声,加入后信噪比SNR=10 dB
Y = awgn(X,10,5);
% 在加入噪声前先测量信号X的功率,然后加入高斯白噪声,加入后信噪比SNR=10 dB
Y = awgn(X,10,’measured’);
使用随机流句柄“S”,用RANDN函数生成随机噪声样本。如果“S”是整数,则将RANDN的状态重置为“S”。如果想要生成可重复的噪声样本,那么提供一个随机流的句柄(‘RandStream’),或者在默认随机流上使用reset方法。
将RANDN状态重置为参数“STATE”指定的状态。这种用法是不赞成的,可能在将来的版本中被删除。
Example 3:
X = sqrt(2)*sin(0:pi/8:6*pi); % 设定一输入信号X
S = RandStream('mt19937ar','seed',5489); % 由RandStream随机数据流产生随机数据
% 指定X的功率为0 dBW,添加要产生的噪声,SNR为10dB,利用本地随机流
Y = awgn(X,10,0,S);
使用参数“POWERTYPE”来指定信噪比“SNR”和信号功率“SIGPOWER”的单位。参数“POWERTYPE”可以选择为“db”或“linear”。如果“POWERTYPE”为“db”,则信噪比“SNR”以db为单位进行表示,“SIGPOWER”用dBW为单位进行表示。如果“POWERTYPE”是“linear”,那么信噪比“SNR”是按比例来测量的,而“SIGPOWER”是按瓦特来测量的。
Example 4:
X = sqrt(2)*sin(0:pi/8:6*pi); % 设定一输入信号X
% 指定X的功率为3瓦,并向其添加噪声,设定线性信噪比为4
Y = awgn(X,4,3,'linear');
% 指定X的功率为3 dBW,并向其添加噪声,信噪比SNR为4 dB
Y = awgn(X,4,3,'dB');
% 在加入噪声前先测量信号X的功率,然后加入高斯白噪声,设定线性信噪比为4,
Y = awgn(X,4,'measured','linear');
M = 4; %调制阶数
data = randi([0 M-1],1000,1); %生成随机序列作为待调制信号
txSig = pskmod(data,M,pi/M); %调制,频偏pi/4
rxSig = awgn(txSig,20); %白噪声,SNR=20dB
scatterplot(txSig) %绘制发送信号的星座图
scatterplot(rxSig) %绘制接收信号的星座图