用matlab设计一个线性相位FIR数字低通滤波器,采用filter函数将如下信号的1500Hz和2000Hz单频成分滤掉:sig = sin(2*pi*500*t)+sin(2*pi*1000*t)+sin(2*pi*1500*t)+sin(2*pi*2000*t);
时间: 2023-11-14 16:59:53 浏览: 186
Digital-filter.zip_matlab低通滤波_带通滤波器_数字高通滤波_滤波器
以下是MATLAB代码:
```matlab
% 采样频率
fs = 8000;
% 通带截止频率
fc = 1000;
% 设计滤波器
N = 101; % FIR滤波器的阶数
L = (N-1)/2; % FIR滤波器的延迟
h = fir1(N-1, fc/(fs/2), 'low', kaiser(N, 5)); % 窗函数为kaiser窗
% 生成信号
t = 0:1/fs:1;
sig = sin(2*pi*500*t)+sin(2*pi*1000*t)+sin(2*pi*1500*t)+sin(2*pi*2000*t);
% 滤波
sig_filtered = filter(h, 1, sig);
% 绘图
figure;
plot(t, sig, 'b', t, sig_filtered, 'r');
legend('原始信号', '滤波后信号');
xlabel('时间 (s)');
ylabel('幅值');
```
结果如下图所示,可以看到1500Hz和2000Hz的成分已被滤除:
![linear_phase_fir_filter](https://img-blog.csdnimg.cn/20210915210022612.png)
阅读全文