MATLAB设计一个IIR与FIR滤波器,采样频率 f_s=5000Hz, 通带频率100-2000Hz,阶数自选,分别画出所设计的滤波器的单位冲击样响应和频率响应
时间: 2024-02-16 17:03:47 浏览: 88
FIR 设计:设计一个阶数为 27 且截止频率为 (0.2, 0.6) 的带通 FIR。 采样频率为 fs=1kHz。-matlab开发
5星 · 资源好评率100%
好的,我可以帮你设计一个IIR和FIR滤波器,以下是详细步骤:
1. IIR滤波器设计
使用MATLAB中的`cheby1`函数进行设计,该函数可以生成Chebyshev Type I滤波器,具有通带波纹和陡峭的截止频率特性。
代码如下:
```matlab
% 采样频率
Fs = 5000;
% 通带频率范围
Wp = [100 2000]/(Fs/2);
% 设计滤波器
[N, Wn] = cheb1ord(Wp(1), Wp(2), 1, 40);
[b, a] = cheby1(N, 0.5, Wn);
```
其中,`cheb1ord`函数用于计算Chebyshev Type I滤波器的阶数和截止频率,`cheby1`函数用于生成滤波器系数。
2. FIR滤波器设计
使用MATLAB中的`fir1`函数进行设计,该函数可以生成具有指定截止频率和滤波器长度的线性相位FIR滤波器。
代码如下:
```matlab
% 滤波器长度
N = 100;
% 截止频率范围
Wn = [100 2000]/(Fs/2);
% 设计滤波器
b = fir1(N, Wn);
a = 1;
```
其中,`fir1`函数用于生成FIR滤波器系数。
3. 绘制单位冲击响应和频率响应
使用MATLAB中的`impz`和`freqz`函数分别绘制IIR和FIR滤波器的单位冲击响应和频率响应。
代码如下:
```matlab
% 绘制IIR滤波器的单位冲击响应和频率响应
figure;
subplot(2, 1, 1);
impz(b, a);
title('IIR滤波器单位冲击响应');
subplot(2, 1, 2);
freqz(b, a);
title('IIR滤波器频率响应');
% 绘制FIR滤波器的单位冲击响应和频率响应
figure;
subplot(2, 1, 1);
impz(b);
title('FIR滤波器单位冲击响应');
subplot(2, 1, 2);
freqz(b);
title('FIR滤波器频率响应');
```
运行上述代码,即可得到IIR和FIR滤波器的单位冲击响应和频率响应图像。
阅读全文