MATLAB 白噪声
Ammar Ali
2024年2月15日
本教程将讨论如何在 MATLAB 中使用 awgn()
和 wgn()
函数生成白噪声。
使用 MATLAB 中的 wgn()
函数生成白噪声
如果要向信号中添加白噪声,可以使用 wgn()
函数,该函数生成以伏特为单位的高斯白噪声样本。该函数的第一个和第二个参数是白噪声的 m×n 矩阵,第三个参数是噪声的功率,第三个参数是负载的阻抗,以欧姆为单位,依此类推。例如,让我们生成一个 101×1 的高斯白噪声矩阵,其负载功率为 -20 dbW,并将其添加到正弦波中。请参考下面的代码。
t = 1:0.01:2;
x = sin(2*pi*t);
figure
plot(t,x)
w_noise = wgn(1,101,-20);
hold on
plot(t,(x+w_noise))
legend('Sine Wave','Sine Wave with Noise')
输出:
在上面的代码中,我们生成了白噪声,并将其添加到一个正弦波中,结果如上图所示。需要注意的是,白噪声样本的数量应该等于加入了噪声的信号的样本数量;否则会出错。你可以通过更改 dbW 中的功率来更改噪声强度。检查此链接以获取有关 wgn()
函数的更多详细信息。
在 MATLAB 中使用 awgn()
函数生成白噪声
如果要向信号中添加白噪声,可以使用 awgn()
函数,该函数将高斯白噪声添加到输入信号中。该函数的第一个参数是输入信号,第二个参数是信噪比,第三个参数是输入信号功率,依此类推。例如,让我们将信噪比为 2 且信号功率为 -2 dbW 的白噪声添加到正弦波中。请参考下面的代码。
t = 1:0.01:2;
x = sin(2*pi*t);
figure
plot(t,x)
w_noise = awgn(x,2,-20);
hold on
plot(t,(x+w_noise))
legend('Sine Wave','Sine Wave with Noise')
输出:
在上面的代码中,我们在正弦波中加入了白噪声,结果如上图所示。你可以通过更改 dbW 中的功率和信噪比来更改噪声强度。查看此链接以获取有关 awgn()
函数的更多详细信息。