matlab 高斯白噪声加入带宽
时间: 2024-12-30 16:31:57 浏览: 10
### 添加高斯白噪声到特定带宽信号的方法
为了在 MATLAB 中向具有特定带宽的信号添加高斯白噪声,可以遵循以下方法:
#### 创建原始信号
首先,创建一个时间序列作为基础信号。假设该信号在一个指定的时间范围内存在。
```matlab
Fs = 1000; % Sampling frequency (Hz)
t = 0:1/Fs:1-1/Fs; % Time vector from 0 to 1 second
f_signal = 50; % Signal frequency (Hz)
signal = sin(2*pi*f_signal*t); % Sine wave as an example signal
```
#### 设定信噪比(SNR)并计算所需噪声功率
设定所需的信噪比来决定要加入多少噪声。SNR 是衡量有用信号强度相对于背景噪声水平的标准度量单位[dB]。
```matlab
desired_snr_db = 10; % Desired SNR in dB
signal_power = sum(abs(signal).^2)/length(signal);
noise_power_ratio = 1/(10^(desired_snr_db/10));
noise_power = signal_power * noise_power_ratio;
std_deviation = sqrt(noise_power);
```
#### 生成高斯白噪声并与原信号相加
利用 `randn` 函数生成均值为零、标准差等于之前计算得到的结果的随机数列代表宽带高斯白噪声,并将其叠加至初始纯净信号之上形成含噪版本的数据流[^1]。
```matlab
gaussian_noise = std_deviation * randn(size(t));
noisy_signal = signal + gaussian_noise;
```
#### 应用低通滤波器限制噪声带宽
如果希望仅保留一定频率范围内的成分,则可以通过设计合适的有限脉冲响应(FIR)或无限脉冲响应(IIR)类型的数字滤波器实现这一点;这里采用 FIR 滤波器为例说明操作流程。
```matlab
bandwidth_hz = 70; % Bandwidth limit for Gaussian White Noise (Hz)
nyquist_freq = Fs / 2;
normalized_cutoff = bandwidth_hz / nyquist_freq;
[b,a] = butter(6, normalized_cutoff,'low'); % Design a sixth-order Butterworth filter.
filtered_noisy_signal = filtfilt(b, a, noisy_signal); % Apply zero-phase filtering.
```
上述过程展示了如何通过编程手段,在保持目标频谱特性的同时有效地往给定电信号里混入限定幅度及频域特性的伪随机扰动分量。
阅读全文