基于MATLAB在IIR滤波器的设计与仿真
Window Specifications选项,当选取采用窗函数设计,该选项可定义,它包含了各种窗函数。
本文以一个IIR滤波器的设计为例说明如何使用MATLAB设计数字滤波器。要求设计一个10阶的带通Chebyshev I滤波器,它的通带范围是100到200Hz,采样频率为1000Hz,Rp=0.5。
本例中,首先在Filter Type中选择Bandpass(带通滤波器);在Design Method选项中选择IIR,接着在相邻的右则选项中选择Chebyshev I(切比雪夫I型);指定Filter Order项中的Specify Order=10;由于采用的是切比雪夫设计,不必在Options中选择;然后在Frequency Specifications中选择Unit为Hz,给出采样频率Fs=1000,通带Fpass1=100和Fpass2=200;最后在 Magnitude Specifications中 选择Unit为db,Apass=0.5。设置完成后点击Design Filter即可得到所设计的IIR滤波器。通过菜单选项Analysis可以在特性区看到所设计的幅频响应、相频响应、冲击响应和零极点配置等特性,如图1所示。设计完成后将结果保存为filterl.fda文件。
图1滤波器的幅频、相频和冲激响应(特性区)
3.2 程序设计法
在MATLAB环境下运行该程序即可得到滤波器的时域冲激响应。由于篇幅所限,这里不再详述源程序。在MATLAB中,对各种滤波器的设计都有相应的计算振幅、相位和冲激响应的函数,可以用来做滤波器程序设计。上例的IIR滤波器的冲激响应可用程序设计如下:
n=10; %阶数为10
Rp=0.5; %幅值衰减为0.5
Wn[100 200]/500;
[b,a]=chebyl(n,Rp,wn);
[y,t]impz(b,a,101);
stem(t,y,'.');
评论