资源描述:
《用双线性变换法设计IIR数字滤波器的实验.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验五用双线性变换法设计IIR数字滤波器一、实验目的l学会运用MATLAB设计数字低通、带通、高通、带阻滤波器的设计方法。二、实验涉及的matlab子函数bilinear功能:双线性变换——将s域映射到z域。调用格式:[numd,dend]=bilinear(num,den,Fs),将模拟域系统函数转换为数字域的系统函数,Fs为采样频率。三、实验原理下面举例说明用双线性变换法设计各种数字滤波器的过程。例1、采用双线性变换法设计一个巴特沃斯数字低通滤波器,要求:wp=0.25*pi,rp=1db,ws=0.4*pi,as=15db,滤波器采样频
2、率Fs=100hz。MATLAB源程序为:%数字滤波器指标wpd=0.25*pi;%滤波器的通带截止频率wsd=0.4*pi;%滤波器的阻带截止频率Rp=1;As=15;%输入滤波器的通阻带衰减指标%转换为模拟原型滤波器指标Fs=100;T=1/Fs;wp=(2/T)*tan(wpd/2);ws=(2/T)*tan(wsd/2);%模拟原型滤波器计算[n,wc]=buttord(wp,ws,Rp,As,'s')%计算阶数n和截止频率[z0,p0,k0]=buttap(n);%归一化巴特沃斯原型设计ba=k0*poly(z0);%求原型滤波器系
3、数baa=poly(p0);%求原型滤波器系数a[ba1,aa1]=lp2lp(ba,aa,wc);%变换为模拟低通滤波器%用双线性变换法计算数字滤波器系数[bd,ad]=bilinear(ba1,aa1,Fs)%双线性变换%求数字系统的频率特性[H,w]=freqz(bd,ad);dbH=20*log10(abs(H)/max(abs(H)));%化为分贝值subplot(2,2,1),plot(w,abs(H));ylabel('
4、H
5、');title('幅度响应');axis([0,pi,0,1.1]);gridsubplot(2,2,
6、2),plot(w,angle(H));ylabel('phi');title('相位响应');axis([0,pi,-4,4]);gridsubplot(2,2,3),plot(w,dbH);title('幅度响应(dB)');ylabel('dB');xlabel('频率');axis([0,pi,-40,5]);gridsubplot(2,2,4),zplane(bd,ad);axis([-1.1,1.1,-1.1,1.1]);title('零极图');运行结果为:n=5wc=103.2016bd=0.00720.03620.0725
7、0.07250.03620.0072ad=1.0000-1.94341.9680-1.07020.3166-0.0392则所求滤波器的系统函数为例2、采用双线性变换法设计一个椭圆数字高通滤波器,要求通带250hz,1db,阻带150hz,20db,滤波器采样频率为Fs=1000hz。MATLAB源程序为:%数字滤波器指标fs=150;fp=250;Fs=1000;T=1/Fs;wpd=fp/Fs*2*pi;%数字滤波器的通带截止频率wsd=fs/Fs*2*pi;%数字滤波器的阻带截止频率Rp=1;As=20;%输入滤波器的通阻带衰减指标%转换
8、为模拟滤波器指标wp=(2/T)*tan(wpd/2);ws=(2/T)*tan(wsd/2);%模拟原型滤波器计算[n,wc]=ellipord(wp,ws,Rp,As,'s')%计算阶数n和截止频率[z0,p0,k0]=ellipap(n,Rp,As);%归一化椭圆原型设计ba=k0*poly(z0);%求原型滤波器系数baa=poly(p0);%求原型滤波器系数a[ba1,aa1]=lp2hp(ba,aa,wc);%变换为模拟高通滤波器%用双线性变换法计算数字滤波器系数[bd,ad]=bilinear(ba1,aa1,Fs)%双线性变换
9、%求数字系统的频率特性[H,w]=freqz(bd,ad);dbH=20*log10(abs(H)/max(abs(H)));%化为分贝值%subplot(2,2,1),plot(w/2/pi*Fs,abs(H));ylabel('
10、H
11、');title('幅度响应');axis([0,Fs/2,0,1.1]);gridsubplot(2,2,2),plot(w/2/pi*Fs,angle(H)/pi*180);ylabel('phi');title('相位响应');axis([0,Fs/2,-180,180]);gridsubplot(2
12、,2,3),plot(w/2/pi*Fs,dbH);title('幅度响应(dB)');axis([0,Fs/2,-40,5]);ylabel('dB');xlab