同样的n值在进入阻带以后衰减更陡峭,更接近理想情况。切贝雪夫滤波器与巴特沃斯滤波器进行比较,切贝雪夫滤波器的通带有波纹,过渡带轻陡直,因此,在不允许通带内有纹波的情况下,巴特沃斯型更可取;从相频响应来看,巴特沃斯型要优于切贝雪夫型,只满足相频特性而不关心幅频特性。巴特沃斯型相频响应更接近于直线。至于椭圆滤波器,则是对于通带和阻带的波纹都有限制条件,而且还要求过渡带较小。
五、结论
本文给出了带通滤波器的模拟原理,并且给出了常用的带通滤波器的Matlab程序以及彼此之间的异同,巴特沃斯滤波器的衰减因数小于椭圆滤波器,但是其阻带波纹小,最终趋向于0,切比雪夫滤波器只是阻带或者通带有波纹。并通过Audition进行了模拟滤波测试,观察滤波器滤波效果。但是,对于滤波器的设计方法并没有给出过程,并没有用物理方法实现各种带通滤波器
六、参考文献
【1】奥本海姆.信号与系统(第二版).刘树棠译
【2】梁虹.信号与线性系统分析——基于MATLAB的方法与实现.高等教育出版社
七、附录
Matlab代码
基于Matlab设计的带通滤波器 fs=20;fp1=2;fp2=4;fs1=1.5;fs2=4.5; Ap=0.0877;As=16.9897;
wpa=2*pi*fp1/fs;wpb=2*pi*fp2/fs;wsa=2*pi*fs1/fs;wsb=2*pi*fs2/fs; c=sin(wpa+wpb)/(sin(wpa)+sin(wpb)); omegap=abs((c-cos(wpb))/sin(wpb));
omegasa=(c-cos(wsa))/sin(wsa);omegasb=(c-cos(wsb))/sin(wsb); omegas=min(abs(omegasa),abs(omegasb)); ep=sqrt(10^(Ap/10)-1);es=sqrt(10^(As/10)-1); N=ceil(log(es/ep)/log(omegas/omegap)); omega0=omegap/ep^(1/N); w=(0+eps):pi/300:pi;
Hw2=1./(1+((c-cos(w))./(omega0*sin(w))).^(2*N)); plot(w/pi,Hw2); grid;
巴特沃斯带通滤波器 模拟程序
wp1=0.45*pi; wp2=0.65*pi; ws1=0.3*pi; ws2=0.75*pi; Rp=1; Rs=40;
Wp=[wp1/pi,wp2/pi]; Ws=[ws1/pi,ws2/pi]; [N,Wn]=buttord(Wp,Ws,Rp,Rs); [B,A]=butter(N, Wn);
[h,omega]=freqz(B,A,64);
subplot(1,2,1);plot(omega/pi,abs(h));grid; xlabel('\\omega/\\pi');ylabel('|H(s)|');
subplot(1,2,2);plot(omega/pi,20*log10(abs(h)));grid; xlabel('\\omega/\\pi');ylabel('增益.dB');
切比雪夫带通滤波器 I型模拟程序
wp1=0.45*pi; wp2=0.65*pi; ws1=0.3*pi; ws2=0.75*pi; Rp=1; Rs=40;
Wp1=tan(wp1/2); Wp2=tan(wp2/2); Ws1=tan(ws1/2); Ws2=tan(ws2/2);
BW=Wp2-Wp1; W0=Wp1*Wp2; W00=sqrt(W0); WP=1; WS=WP*(W0^2-Ws1^2)/(Ws1*BW); [N,Wn]=cheb1ord(WP,WS,Rp,Rs,'s'); [B,A]=cheby1(N,Rp,Wn,'s'); [BT,AT]=lp2bp(B,A,W00,BW); [num,den]=bilinear(BT,AT,0.5); [h,omega]=freqz(num,den,64);
subplot(1,2,1);plot(omega/pi,abs(h)); xlabel('\\omega/\\pi');ylabel('|H(s)|');
subplot(1,2,2);plot(omega/pi,20*log10(abs(h))); xlabel('\\omega/\\pi');ylabel('增益.dB');
II型模拟程序
wp1=0.45*pi; wp2=0.65*pi; ws1=0.3*pi; ws2=0.75*pi; Rp=1; Rs=40;
Wp1=tan(wp1/2); Wp2=tan(wp2/2); Ws1=tan(ws1/2); Ws2=tan(ws2/2);
BW=Wp2-Wp1; W0=Wp1*Wp2; W00=sqrt(W0); WP=1; WS=WP*(W0^2-Ws1^2)/(Ws1*BW); [N,Wn]=cheb2ord(WP,WS,Rp,Rs,'s'); [B,A]=cheby2(N,Rs,Wn,'s'); [BT,AT]=lp2bp(B,A,W00,BW); [num,den]=bilinear(BT,AT,0.5); [h,omega]=freqz(num,den,64);
subplot(1,2,1);plot(omega/pi,abs(h)); xlabel('\\omega/\\pi');ylabel('|H(s)|');
subplot(1,2,2);plot(omega/pi,20*log10(abs(h)));
axis([0 1 -100 0]);xlabel('\\omega/\\pi');ylabel('增益.dB');
椭圆带通滤波器 模拟程序
wp1=0.45*pi; wp2=0.65*pi; ws1=0.3*pi; ws2=0.75*pi; Rp=1; Rs=40;
Wp1=tan(wp1/2); Wp2=tan(wp2/2); Ws1=tan(ws1/2); Ws2=tan(ws2/2);
BW=Wp2-Wp1; W0=Wp1*Wp2; W00=sqrt(W0); WP=1; WS=WP*(W0^2-Ws1^2)/(Ws1*BW); [N,Wn]=ellipord(WP,WS,Rp,Rs,'s'); [B,A]=ellip(N,Rp,Rs,Wn,'s'); [BT,AT]=lp2bp(B,A,W00,BW); [num,den]=bilinear(BT,AT,0.5); [h,omega]=freqz(num,den,64);
subplot(1,2,1);plot(omega/pi,abs(h));grid; xlabel('\\omega/\\pi');ylabel('|H(s)|');
subplot(1,2,2);plot(omega/pi,20*log10(abs(h)));grid; xlabel('\\omega/\\pi');ylabel('增益.dB');
贝塞尔带通滤波器 模拟程序
wp1=0.45*pi; wp2=0.65*pi; ws1=0.3*pi; ws2=0.75*pi; Rp=1; Rs=40;
Wp=[wp1/pi,wp2/pi]; Ws=[ws1/pi,ws2/pi]; [N,Wn]=buttord(Wp,Ws,Rp,Rs); [B,A]=besself(N, Wn); [h,omega]=freqz(B,A,64);
subplot(1,2,1);plot(omega/pi,abs(h));grid; xlabel('\\omega/\\pi');ylabel('|H(s)|');
subplot(1,2,2);plot(omega/pi,20*log10(abs(h)));grid; xlabel('\\omega/\\pi');ylabel('增益.dB');