您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > IIR和FIR滤波器的MATLAB设计
IIR和FIR滤波器的MATLAB设计2012301510047付维杰一、问题根据下列参数完成IIR和FIR数字滤波器设计通带范围300Hz~500Hz带内最大衰减Rp=-3dB阻带范围250Hz&550Hz带内最小衰减Rs=-40dB采样频率Fs=2000Hz要求:1、分别完成IIR和FIR滤波器的设计2、IIR设计不可使用butter、cheby1、cheby2和ellip这四个完全设计函数3、谈谈自己对两种滤波器设计的感受二、分析与建模在数字滤波器设计中,大致分为两种:一种是有限冲激响应滤波器,简称FIR;另一种是无限冲激响应滤波器,简称IIR。对于IIR,设计流程为:确定滤波器阶数、设计模拟原型滤波器、频率变换、变换到数字滤波器。确定阶数常用到函数“butterord”、“cheb1ord”、“cheb2ord”等,模拟低通滤波器原型的设计常用到“buttap”、“cheb1ap”、“cheb2ap”,变换到带通用到函数“lp2bp”,最后完成到数字域通常用冲激函数不变法或者双线性变换法。当然还有完全设计函数“butter”、“cheb1”等,只需给定参数即生成对应的滤波器参数。对于FIR,常用的设计方法是窗口法和最优等波动法。前者用到fir1和fir2这两个函数,后者用到remezord和remez函数,其对应的函数输入参量可以在MATLAB的HELP系统中查看或者仿照已有的设计例子。除了上述一步步确定滤波器的参数,MATLAB也可以同fdatool来直接设计滤波器,只需在交互界面给出滤波器的种类和参数即可。本次设计也用到了它。三、源代码1、巴特沃斯设计IIR(冲激函数不变法):%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Builddate:2014/12/28%%%%%Builder:2012301510047_付维杰%%%%%Usefunctionofimpinvar%%%%%BUTTERWORTH%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Fs=2000;%freaquencyofsampleWp=[300*2*pi500*2*pi];%passingbandWs=[250*2*pi550*2*pi];%stopbandRp=3;%MaximunattenuationofpassingbandRs=40%Minimunattenuationofstopband[n,Wn]=buttord(Wp,Ws,Rp,Rs,'s');%order[z,p,k]=buttap(n);%zero,peak,gainWo=sqrt(Wn(1)*Wn(2));%Centerfrequency[b,a]=zp2tf(z,p,k);%zerototransmitfunction[bt,at]=lp2bp(b,a,Wo,Wn(2)-Wn(1));%lowtoband[bz,az]=impinvar(bt,at,Fs);%impulseofinvariantfreqz(bz,az)2、巴特沃斯设计IIR(双线性变换法):%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Builddate:2014/12/28%%%%%Builder:2012301510047_付维杰%%%%%Usebilineartransformation%%%%%BUTTERWORTH%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Fs=2000;%frequencyofsampleWp=[tan(300*pi/Fs)*Fs*2tan(500*pi/Fs)*Fs*2];Ws=[tan(250*pi/Fs)*Fs*2tan(550*pi/Fs)*Fs*2];Rp=3;%MaximunattenuationofpassingbandRs=40%Minimunattenuationofstopband[n,Wn]=buttord(Wp,Ws,Rp,Rs,'s');%order[z,p,k]=buttap(n);%zero,peak,gainWo=sqrt(Wn(1)*Wn(2));%Centerfrequency[b,a]=zp2tf(z,p,k);%zerototransmitfunction[bt,at]=lp2bp(b,a,Wo,Wn(2)-Wn(1));%lowtoband[bz,az]=bilinear(bt,at,Fs);%impulseofinvariantfreqz(bz,az)3、切比雪夫I型设计IIR:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Builddate:2014/12/28%%%%%Builder:2012301510047_付维杰%%%%%Usefunctionofimpinvar%%%%%CHEBYSHEVI%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Fs=2000;%freaquencyofsampleWp=[300*2*pi500*2*pi];%passingbandWs=[250*2*pi550*2*pi];%stopbandRp=3;%MaximunattenuationofpassingbandRs=40;%Minimunattenuationofstopband[n,Wn]=cheb1ord(Wp,Ws,Rp,Rs,'s');%order[z,p,k]=cheb1ap(n,Rp);%zero,peak,gainWo=sqrt(Wn(1)*Wn(2));%Centerfrequency[b,a]=zp2tf(z,p,k);%zerototransmitfunction[bt,at]=lp2bp(b,a,Wo,Wn(2)-Wn(1));%lowtoband[bz,az]=impinvar(bt,at,Fs);%impulseofinvariantfreqz(bz,az)n4、切比雪夫II型设计IIR:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Builddate:2014/12/28%%%%%Builder:2012301510047_付维杰%%%%%Usefunctionofimpinvar%%%%%CHEBYSHEVII%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Fs=2000;%freaquencyofsampleWp=[300*2*pi500*2*pi];%passingbandWs=[250*2*pi550*2*pi];%stopbandRp=3;%MaximunattenuationofpassingbandRs=40;%Minimunattenuationofstopband[n,Wn]=cheb2ord(Wp,Ws,Rp,Rs,'s');%order[z,p,k]=cheb2ap(n,Rs);%zero,peak,gainWo=sqrt(Wn(1)*Wn(2));%Centerfrequency[b,a]=zp2tf(z,p,k);%zerototransmitfunction[bt,at]=lp2bp(b,a,Wo,Wn(2)-Wn(1));%lowtoband[bz,az]=impinvar(bt,at,Fs);%impulseofinvariantfreqz(bz,az)n5、窗函数法设计FIR:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Builddate:2014/12/28%%%%%Builder:2012301510047_付维杰%%%%%USEWindow%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Fs=2000;%freaquencyofsamplefcuts=[250300500550];mags=[010];devs=[0.0110^(-3/20)0.01];[n,Wn,beta,ftype]=kaiserord(fcuts,mags,devs,Fs);%kaiserwindow[h]=fir1(n,Wn,ftype,kaiser(n+1,beta));freqz(h)n6、最优等波动设计FIR:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Builddate:2014/12/28%%%%%Builder:2012301510047_付维杰%%%%%UseParks-McClellanFIR%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Fs=2000;%freaquencyofsampleRp=3;%MaximunattenuationofpassingbandRs=40;%Minimunattenuationofstopbandf=[250300500550];%frequencya=[010];%Expectedamplitudedev=[0.171,0.01,0.171];%[(10^(Rp/20)-1)/(10^(Rp/20)+1)10^(-Rs/20)(10^(Rp/20)-1)/(10^(Rp/20)+1)];[n,fo,ao,w]=remezord(f,a,dev,Fs);b=remez(n,fo,ao,w,'bandpass');freqz(b,1,1024,Fs)n四、设计结果(频率相位响应)1、巴特沃斯设计IIR(冲激函数不变法):2、巴特沃斯设计IIR(双线性变换法):3、切比雪夫I型设计IIR:4、切比雪夫II型设计IIR:5、窗函数法设计FIR:6、最优等波动设计FIR:五、总结设计过程中为了检验设计的准确性,同时也为了训练FDATOOL的使用,在fdatool中同时设计,把参数输入,分别得到:1、巴特沃斯2、切比雪夫I3、切比雪夫II4、椭圆5、窗函数hamming6、窗函数kaiser从上述设计结果可以看出:IIR因为系统函数存在极点,故其系统若极点在单位圆外即是不稳定的。其相位响应很难做到线性度很好,故可能产生一定程度上的相位失真。但是正是由于它只要求极点在单位圆内,其实现带通的系统阶数可以做到很小,使其设计可以很简单,易于实现。若要修正其相位的偏移,则需要“全通网络”,却会在一定程度上增加系统的复杂程度和阶数。对比下FIR滤波器有一个先天的优势:系统的冲激响应易设计为奇对称或偶对称,故相位线性度很好。不同于IIR的设计具有分段常数的特性,FIR滤波器可以设计为多通带多阻带的系统,可以适用于数字微分器,这一点是IIR无法做到的。但是另一方面,由于FIR系统函数的极点固定在原点,滤波器的高性能要求高阶数,通常的FIR滤波器阶数都很高,达到IIR的5~10倍,故其经济性不好,需要的元件多。在fdatool里设计时,发现当阶数越高,越接近一个门波形,阻带内的盘瓣越密集,同时若阻带的衰减要求更高,相同情况下的阶数也就越多。如设计了一个同样情况下的要求阻带-60dB的滤波器:它的阶数达到了146.这种情况适用于高质量要求的滤波器,而对于经济性要求高的、需要批量产出的,则通常采用阻带衰减-20~-40dB的滤波器。综上所述,对于要求经济性的、高产出的、滤波质量要求不是很高的,可以采用IIR滤波器;而对于要求高质量、对失真很敏感的一些专业领域,则采用FIR滤波,同时可以考虑在一定经济基础上将阻带的衰减降到尽可能低以满足专业需要。2012301080042侯悦题目:根据下列参数完成IIR和FIR数字滤波器设计通带范围300Hz~500Hz带内最大衰减Rp=-3dB阻带范围250Hz&550Hz带内最小衰减Rs=-40dB采样频率Fs=2000Hz要求:1、分别完成IIR和FIR滤波器的设计2、IIR设计不可使用butter、cheby1、cheby2和ellip这四个完全设计函数3、谈谈自己对两种滤
本文标题:IIR和FIR滤波器的MATLAB设计
链接地址:https://www.777doc.com/doc-5571621 .html