1、实验5 无限冲激响应数字滤波器设计一、实验目的掌握双线性变换法及冲激响应不变法设计IIR数字滤波器的具体设计方法及其原理;熟悉用双线性变换法及冲激响应不变法设计低通、高通和带通IIR数字滤波器的计算机编程。二、实验编程函数 在MATLAB中,可以用下列函数辅助设计IIR数字滤波器:1) 利用buttord和cheblord可以确定低通原型巴特沃斯和切比雪夫滤波器的阶数和截止频率;2) num,den=butter(N,Wn)(巴特沃斯);3) num,den=cheby1(N,Wn),num,den=cheby2(N,Wn)(切比雪夫1型和2型)可以进行滤波器的设计;4) lp2hp,lp2b
2、p,lp2bs可以完成低通滤波器到高通、带通、带阻滤波器的转换;5) 使用bilinear可以对模拟滤波器进行双线性变换,求得数字滤波器的传输函数系数;6) 利用impinvar可以完成冲激响应不变法的模拟滤波器到数字滤波器的转换。注: 双线性变换法通过将数字频率的取值范围从0到对应到模拟频率,也就对应于模拟域中所有可能的频率值。双线性变换法不会出现频率混叠,但非线性关系却导致数字滤波器的频率响应不能逼真地模仿模拟滤波器的频率响应。冲激响应不变法通过选择满足设计要求的模拟滤波器单位冲激响应h(t)的采样值的h(n),得到的被采样的冲激响应将给出与原模拟滤波器非常相近的滤波器形状。由于该方法不可
3、避免的要发生频率混叠现象,所以只适合设计低通和带通滤波器。 三、实验内容 1.设采样周期T=250s,用冲激响应不变法和双线性变换法设计一个三阶巴特沃斯滤波器,其3dB边界频率为fc =1kHz。 B,A=butter(3,2*pi*1000,s); num1,den1=impinvar(B,A,4000); h1,w=freqz(num1,den1); B,A=butter(3,2/0.00025,s); num2,den2=bilinear(B,A,4000); h2,w=freqz(num2,den2); f=w/pi*2000; plot(f,abs(h1),-.,f,abs(h2),
4、-); grid; xlabel(频率/Hz ) ylabel(幅值/dB) 程序中第一个butter的边界频率21000,为冲激响应不变法原型低通滤波器的边界频率;第二个butter的边界频率2/T=2/0.00025,为双线性变换法原型低通滤波器的边界频率.图1给出了这两种设计方法所得到的频响,虚线为冲激响应不变法的结果;实线为双线性变换法的结果。冲激响应不变法由于混叠效应,使得过渡带和阻带的衰减特性变差,并且不存在传输零点。 图12. 设计一巴特沃斯带通滤波器,其通带边界频率分别为f2=110kHz和f1=90kHz处的最大衰减小于3dB,在阻带边界频率分别为f3 =80kHz 和f4=
5、120kHz处的最小衰减大于10dB,采样频率fs=400Hz。 w1=2*400*tan(2*pi*90/(2*400); w2=2*400*tan(2*pi*110/(2*400); wr1=2*400*tan(2*pi*80/(2*400); wr2=2*400*tan(2*pi*120/(2*400); N,wn=buttord(w1 w2, wr1 wr2,3,10,s); B,A=butter(N,wn,s); num,den=bilinear(B,A,400); h,w=freqz(num,den); f=w/pi*200; plot(f,20*log10(abs(h); axi
6、s(40,160,-30,10); grid; xlabel(频率/kHz) ; ylabel(幅度/dB) 图2 3. 利用MATLAB编程设计一个数字带通滤波器,指标要求如下:通带边缘频率:,通带衰减。阻带边缘频率:,最小阻带衰减 。给出IIR数字滤波器参数,绘出幅度和相位频响曲线,讨论实现形式和特点。备注:编写程序之前可先在纸上写出设计所需滤波器的流程,然后用程序代替你纸上的公式。练习3的代码如下: w1=2*400*tan(0.225*pi); w2=2*400*tan(0.325*pi); wr1=2*400*tan(0.150*pi); wr2=2*400*tan(0.375*pi); N,wn=buttord(w1 w2, wr1 wr2,1,40,s); B,A=butter(N,wn,s); num,den=bilinear(B,A,400); h,w=freqz(num,den); f=w/pi*200; plot(f,20*log10(abs(h); axis(0,0.2,-10,20); grid; xlabel(频率/kHz) ; ylabel(幅度/dB)3