资源描述:
《IIR滤波器.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、IIR滤波器的设计一、模拟低通滤波器的设计1、巴特沃思低通滤波器的设计MATLAB提供了一个叫做[z,p,k]=buttap(N)的函数,来设计N阶归一化的巴特沃思模拟原形滤波器,它返回数组z和p(零点和极点)以及增益k。但是,我们需要具有任意Ωc的未归一化的巴特沃思滤波器。可以用自定义的u_buttap(N,Omegac)函数来设计未归一化的巴特沃思模拟原形滤波器。function[b,a]=u_buttap(N,Omegac);%[b,a]=u_buttap(N,Omegac);%b=numera
2、torpolynomialcoefficientsofHa(s)%a=denominatorpolynomialcoefficientsofHa(s)%N=OrderoftheButterworthFilter%Omegac=Cutofffrequencyinradians/sec[z,p,k]=buttap(N);%z,p,k为归一化的零、极点和增益p=p*Omegac;%极点去归一化k=k*Omegac^N;%增益乘B=real(poly(z));%由零点恢复多项式B(z)b0=k;b=k*
3、B;a=real(poly(p));%由极点恢复多项式A(z)模拟低通滤波器是由参数Ωp,Rp,Ωs和As描述的,设计巴特沃思滤波器的基本思想是根据这些指标得到阶数N和截止频率Ωc。可以编写函数afd_butt来实现:function[b,a]=afd_butt(Wp,Ws,Rp,As);ifWp<=0error('Passbandedgemust>0')endifWs<=Wperror('Stopbandedgemust>Passbandedge')endif(Rp<0)
4、(As<0)e
5、rror('PBrippleand/orSBattenuationmust>0')endN=ceil((log10((10^(Rp/10)-1)/(10^(As/10)-1)))/(2*log10(Wp/Ws)));fprintf('***ButterworthFilterOrder=%2.0f',N)OmegaC=Wp/((10^(Rp/10)-1)^(1/(2*N)));[b,a]=u_buttap(N,OmegaC);例1:设计一个低通巴特沃思滤波器,以满足:通带截止频率:Ωp=0.2
6、π,通带波动:Rp=7dB阻带截止频率:Ωs=0.3π,阻带波动:As=16dBwp=0.2*pi;Ws=0.3*pi;Rp=7;As=16;%模拟滤波器设计:[b,a]=afd_butt(Wp,Ws,Rp,As)%计算频率响应:w=[0:1:500]*pi/500;h=freqs(b,a,w);%画图subplot(2,2,1);plot(w/pi,abs(h));title('幅度响应');grid;subplot(2,2,3);plot(w/pi,20*log10(abs(h)));title('
7、幅度响应(dB)');grid;subplot(2,2,2);plot(w/pi,angle(h)*180/pi);title('相位响应');grid;subplot(2,2,4);impulse(b,a);title('脉冲响应');grid;2、切比雪夫Ⅰ型低通滤波器的设计MATLAB提供了一个函数[z,p,k]=cheblap(N,Rp),来设计一个阶数为N,通带波动为Rp的归一化切比雪夫Ⅰ型原型滤波器。可以自编写函数u_chblap用于设计一个未归一化的切比雪夫Ⅰ型原型滤波器,它返回直接形式的
8、Ha(s)。以函数u_chblap为基础,可以编写一个afd_chb1函数,它根据给定的技术指标设计模拟切比雪夫Ⅰ型滤波器。例2:设计一个低通切比雪夫Ⅰ型滤波器,以满足:通带截止频率:Ωp=0.2π,通带波动:Rp=1dB阻带截止频率:Ωs=0.3π,阻带波动:As=16dBWp=0.2*pi;Ws=0.3*pi;Rp=1;As=16;%模拟滤波器设计:[b,a]=afd_chb1(Wp,Ws,Rp,As);%计算频率响应:w=[0:1:500]*pi/500;h=freqs(b,a,w);%画图su
9、bplot(2,2,1);plot(w/pi,abs(h));title('幅度响应');grid;subplot(2,2,3);plot(w/pi,20*log10(abs(h)));title('幅度响应(dB)');grid;subplot(2,2,2);plot(w/pi,angle(h)*180/pi);title('相位响应');grid;subplot(2,2,4);impulse(b,a);title('脉冲响应');