MATLAB实现利用FIR数字低通滤波器从噪声中提取信号
时间: 2024-03-23 15:43:39 浏览: 88
基于MATLAB GUI的开发数字信号处理音频FIR去噪滤波器 毕业设计
5星 · 资源好评率100%
在 MATLAB 中,可以使用 `fir1` 函数来设计 FIR 数字低通滤波器,使用 `filter` 函数来进行滤波操作。下面是一个简单的示例:
```matlab
% 生成含有噪声的信号
Fs = 1000; % 采样率
t = 0:1/Fs:1; % 时间向量
x = sin(2*pi*50*t) + sin(2*pi*150*t); % 带有50Hz和150Hz正弦波的信号
noise = 0.5*randn(size(t)); % 高斯白噪声
y = x + noise; % 加噪声后的信号
% 设计 FIR 数字低通滤波器
fc = 100; % 截止频率
n = 100; % 滤波器阶数
b = fir1(n, fc/(Fs/2)); % 设计滤波器系数
% 对信号进行滤波
filtered_y = filter(b, 1, y);
% 绘制信号和滤波后的信号
figure;
subplot(2,1,1);
plot(t, y);
title('Original Signal with Noise');
xlabel('Time (s)');
ylabel('Amplitude');
subplot(2,1,2);
plot(t, filtered_y);
title('Filtered Signal');
xlabel('Time (s)');
ylabel('Amplitude');
```
在上面的示例中,我们生成了一个带有50Hz和150Hz正弦波的信号,并添加了高斯白噪声,然后使用 `fir1` 函数设计了一个阶数为100,截止频率为100Hz的 FIR 数字低通滤波器,最后使用 `filter` 函数对信号进行滤波,得到了滤波后的信号。可以看到,滤波后的信号中只保留了低频成分,噪声得到了有效的滤除。
阅读全文