Matlab滤除同频高斯白噪声
时间: 2023-12-24 17:20:20 浏览: 218
在Matlab中,可以使用以下步骤来滤除同频高斯白噪声:
1. 生成高斯白噪声信号并加到原始信号上。
```matlab
% 生成高斯白噪声
noise = randn(size(signal));
% 添加噪声
noisy_signal = signal + noise;
```
2. 使用滤波器对噪声进行滤波。可以使用Butterworth、Chebyshev、Elliptic等滤波器。
```matlab
% 滤波器设计
fs = 1000; % 采样率
fc = 100; % 截止频率
[b,a] = butter(4,fc/(fs/2),'high'); % 高通滤波器
% 滤波器应用
filtered_signal = filter(b,a,noisy_signal);
```
在上述代码中,我们使用了Butterworth高通滤波器,将截止频率设为100Hz,滤除了高斯白噪声。
3. 对滤波后的信号进行分析,验证是否滤除了同频高斯白噪声。
```matlab
% 时域分析
subplot(2,1,1);
plot(t,signal);
hold on;
plot(t,filtered_signal);
xlabel('Time (s)');
ylabel('Amplitude');
legend('Original Signal','Filtered Signal');
% 频域分析
subplot(2,1,2);
N = length(signal);
f = (0:N-1)*(fs/N);
signal_fft = abs(fft(signal));
filtered_fft = abs(fft(filtered_signal));
plot(f,signal_fft);
hold on;
plot(f,filtered_fft);
xlim([0 fs/2]);
xlabel('Frequency (Hz)');
ylabel('Amplitude');
legend('Original Signal','Filtered Signal');
```
在上述代码中,我们将原始信号和滤波后的信号绘制在同一张图中进行比较,同时绘制了频谱图,以验证是否滤除了同频高斯白噪声。
希望这些步骤对你有所帮助!
阅读全文