matalb加高斯白噪声
时间: 2024-12-31 11:42:40 浏览: 10
### 在 MATLAB 中向信号添加高斯白噪声
#### 使用 `awgn` 函数
在 MATLAB 中,`awgn` 函数被广泛应用于通信系统的仿真中,用于模拟加性高斯白噪声 (AWGN) 信道环境。此函数可以在输入信号的基础上增加指定信噪比(SNR) 的高斯白噪声[^1]。
对于具体的实现方式之一是利用带有参数 `'measured'` 的 `awgn` 方法来处理未知功率的原始信号。该模式下,程序会自动测量输入信号的实际平均功率并基于这个值调整所加入的噪声强度以满足设定好的 SNR 要求[^2]。
下面是具体的应用实例:
```matlab
% 定义时间轴 t 和正弦波 s
Fs = 100; % Sampling frequency
t = (0:1/Fs:1-1/Fs); % Time vector
f = 5; % Frequency of the sine wave
s = sin(2*pi*f*t);
% 设定目标信噪比 snr_db
snr_db = 10;
% 添加高斯白噪声至原信号形成带噪信号 noisy_signal
noisy_signal = awgn(s, snr_db, 'measured');
```
这段代码创建了一个简单的正弦波作为测试信号,并通过调用 `awgn` 来引入具有特定信噪比特性的随机噪声成分。
#### 利用 `randn` 手动生成噪声序列
另一种常见的做法是从标准正态分布(`N(0,1)`)抽取样本构建独立同分布(i.i.d.) 高斯变量组成的数组 n,之后依据所需的 SNR 对其缩放并与干净的数据相加以获得含噪版本[^3]。
这里给出一段示范代码片段展示这种方法:
```matlab
% 计算所需的标准差 sigma 根据给定的 SNR dB 值
sigma = sqrt(var(s)*(10^(-snr_db/10)));
% 生成与信号长度相同的 i.i.d. 正态分布噪声项
noise = randn(size(t)) * sigma;
% 将人工制造出来的噪声叠加到纯净信号之上得到最终结果
manually_noised_signal = s + noise;
```
这两种途径都能有效地往数据里混入期望水平下的 AWGN ,从而帮助研究者们更好地理解和优化实际应用场景里的抗干扰能力等问题。
阅读全文