代码可运行,完美最终版!
在MATLAB下设计IIR滤波器可使用Butterworth函数设计出巴特沃斯滤波器,使用Cheby1函数设计出契比雪夫I型滤波器,使用Cheby2设计出契比雪夫II型滤波器。与FIR滤波器的设计不同,IIR滤波器设计时的阶数不是由设计者指定,而是根据设计者输入的各个滤波器参数(截止频率、通带滤纹、阻带衰减等),由软件设计出满足这些参数的最低滤波器阶数。在MATLAB下设计不同类型IIR滤波器均有与之对应的函数用于阶数的选择。 IIR数字滤波器是一种离散时间系统,其系统函数为
Y(z)
X(z)
H(z)
bz
kk 0Nk 1
M
k
1 akz k
(4-1)
假设M≤N,当M>N时,系统函数可以看作一个IIR的子系统和一个(M-N)的FIR子系统的级联。IIR数字滤波器的设计实际上是求解滤波器的系数和 ,它是数学上的一种逼近问题,即在规定意义上(通常采用最小均方误差准则)去逼近系统的特性。如果在S平面上去逼近,就得到模拟滤波器;如果在z平面上去逼近,就得到数字滤波器。
设计高通、带通、带阻等数字滤波器通常可以归纳为如图所示的两种常用方法。
图4-1 数字滤波器设计的两种方法
方法1: 首先设计一个模拟原型低通滤波器,然后通过频率变换成所需要的模拟高通、带通或带阻滤波器,最后再使用冲激不变法或双线性变换成相应的数字