资源描述:
《数字信号处理实验用双线性变换法设计IIR数字滤波器》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验5用双线性变换法设计IIR数字滤波器一、实验目的•学会运用MATLAB设计数字低通、带通、高通、带阻滤波器的设计方法。二、实验涉及的matlab子函数bilinear功能:双线性变换一一将s域映射到z域。调用格式:[numd,dend]=bilinear(num,den,Fs),将模拟域系统函数转换为数字域的系统函数,Fs为采样频率。三、实验原理下面举例说明用双线性变换法设计各种数字滤波器的过程。例1、采用双线性变换法设计一个巴特沃斯数字低通滤波器,要求:wp=0.25*pi,rp=ldb,w
2、s=0・4*pi,as=15db,滤波器采样频率Fs二lOOhz。MATLAB源程序为:%数字滤波器指标wpd=0.25*pi;%滤波器的通带截止频率wsd=0.4*pi;%滤波器的阻带截止频率Rp=l;As=15;%输入滤波器的通阻带衰减指标%转换为模拟原型滤波器指标Fs=lOO;T=l/Fs;wp=(2/T)*tan(wpd/2);ws=(2/T)*tan(wsd/2);%模拟原型滤波器计算[n,wc]=buttord(wp,ws,Rp,As,,s,)%计算阶数n和截止频率[zO,pO,kOl
3、=buttap(n);%归一化切比雪夫1型原型设计bO=kO*poly(zO);%求原型滤波器系数baO=poly(pO);%求原型滤波器系数a[bt,at]=lp21p(b0,a0,wc);%变换为模拟低通滤波器%用双线性变换法计算数字滤波器系数[bd,ad]=bilinear(bt,at,Fs)%双线性变换%求数字系统的频率特性[H,w]=freqz(bd,ad);dbH=20*log10(abs(H)/max(abs(H)));%化为分贝值subplot(2,2,l),plot(w/pi,a
4、bs(H));ylabel(lH(eAjAOmega)r);xlabel('Omega:单位八piJ;title('幅度响应');gridsubplot(2,2,2),plot(w/pi,angle(H));ylabcI('phi(Omega)‘);xlabel('Omega:单位Api');title('相位响应J;gridsubplot(2,2»3),plot(w/pi,dbH);title(幅度响应(dB)');ylabel(,dB
5、H(eAjAOmega)
6、,);xlabcl(
7、'Omcga:单位八pi');gridsubplot(2,2,4),zplane(bd,ad);axis(卜1」,1.1,-1.1,1.1]);title(*零极图');运行结果为:n=5wc=103.2016bd二0.00720.03620.07250.07250.03620.0072ad=1.0000-1.94341.9680-1.07020.3166-0.0392则所求滤波器的系统函数为H(z)=0.0072+0.0362z"+0・0725z_+0.0725h+0.0362z"+0.007
8、2z-5""1-1.9434zd+1.968z'2-1.0702Z-3+0.3166z-4-0.0392z'5Q:单位/兀Q:单位/兀零极图1;XOX[Xx0.50-0.5■101RealPart例2、采用双线性变换法设计一个椭圆数字高通滤波器,要求通带250hz,ldb,阻带150hz,20db,滤波器采样频率为Fs二lOOOhz。MATLAB源程序为:%数字滤波器指标fs=150;fp=250;Fs=1000;T=l/Fs;wpd=fp/Fs*2*pi;%数字滤波器的通带截止频率wsd=fs
9、/Fs*2*pi;%数字滤波器的阻带截止频率Rp=l;As=20;%输入滤波器的通阻帯衰减指标%转换为模拟滤波器指标wp=(2/T)*tan(wpd/2);ws=(2/T)5
10、:tan(wsd/2);%模拟原型滤波器计算[n,wc]=ellipord(wp,ws,Rp,As;s,)%i+算阶数n和截止频率[zO,pO,kO]=ellipap(n,Rp,As);%归一化椭圆原型设计bO=kO:}:poly(zO);%求原型滤波器系数baO=poly(pO);%求原型滤波器系数a[bt,at]=lp2
11、hp(b0,a0,wc);%变换为模拟高通滤波器%用双线性变换法讣算数字滤波器系数[bd,ad]=bilinear(bt,at,Fs)%双线性变换%求数字系统的频率特性[H,w]=freqz(bd,ad);dbH=20*log10(abs(H)/max(abs(H)));%化为分贝值%subplot(2,2,l),plot(w/2/pi*Fs,abs(H));ylabel(1Hr);titleC幅度响应');axis([0,Fs/2,0,l.l]);gridsubplot(2,2,