📅  最后修改于: 2023-12-03 15:38:04.922000             🧑  作者: Mango
在信号处理和通信领域中,高斯白噪声是一种十分常见的噪声类型。为了验证算法的正确性和鲁棒性,通常需要将高斯白噪声添加到信号中进行仿真分析。在 MATLAB 中,可以使用 randn 函数生成高斯白噪声,并使用加法将其添加到信号中。
下面是一个简单的例子,展示如何使用 MATLAB 将高斯白噪声添加到信号中:
% 生成信号
Fs = 1000; % 采样率为 1000 Hz
t = 0:1/Fs:1-1/Fs; % 时间向量,长度为 1 秒
f1 = 10; % 信号频率为 10 Hz
x = sin(2*pi*f1*t); % 生成 10 Hz 正弦信号
% 生成高斯白噪声
sigma = 0.1; % 高斯白噪声的标准差为 0.1
n = sigma * randn(1,length(x)); % 生成与 x 同样长度的高斯白噪声
% 将高斯白噪声添加到信号中
y = x + n;
% 绘制信号和含噪信号的波形
figure;
subplot(2,1,1);
plot(t,x);
xlabel('时间/s');
ylabel('幅值');
title('10 Hz 正弦信号');
subplot(2,1,2);
plot(t,y);
xlabel('时间/s');
ylabel('幅值');
title('含高斯白噪声信号');
运行上述代码,即可得到信号和含噪信号的波形图如下图所示:
上述代码中,我们首先生成了一个 10 Hz 正弦信号。然后,使用 randn 函数生成具有指定标准差的高斯白噪声 n。最后,将信号 x 和高斯白噪声 n 相加得到含噪信号 y。最后,我们将两个波形图绘制在同一张图上,以直观地观察信号和含噪信号的差异。
值得注意的是,高斯白噪声的标准差 sigma,可以根据需求进行调整,以模拟不同噪声强度下的信号。此外,上述代码仅针对一个简单的正弦信号进行了演示,读者可以根据实际需求,对代码进行相应的修改和扩展。