低通的阻带映像到带阻的阻带
化简得到:
在H ( )中的变换关系,可得到带阻滤波器系统函数
由模拟带阻到数字带阻的变换 仍利用双线性变换
模拟低通原型滤波器的 平面变换成数字带阻滤波器的 平面的表达式
可得
H ( ),转换数字带阻系统函数
从模拟低通系统函数
数字带阻滤波器不能用脉冲响应不变法:原因是脉冲响应不变法有频谱周期延拓效应,因此只能用于带限的频响特性,如衰减特性很好的低通或带通。而高频衰减越大,频响的混淆效应越小,至于带阻滤波器,由于它们在高频部分不衰减,因此将完全混淆在低频响应中。
MATLAB中程序运行: >> fp=2100; fs=8000; >>Fs=20000; >>Rp=0.5; Rs=30; >>T=1/Fs; %设计指标 >>W1p=fp/Fs*2;W1s=fs/Fs*2;
>> [N,Wn] = buttord (W1p,W1s,Rp,Rs,'s'); >> [z,p,k]=buttap(N); >> [bp,ap]=zp2tf(z,p,k);
>> [bs,as]=lp2lp(bp,ap,Wn*pi*Fs);
>> [bz,az]=impinvar(bs,as,Fs); %用脉冲响应不变法进行模数变换 >>sys=tf(bz,az,T); >> [H,W]=freqz(bz,az,512,Fs);
>> plot(W,abs(H)); grid on; xlabel('频率/Hz'); ylabel('振幅/H'); title('巴特沃斯滤波器')
巴特沃斯滤波器1.41.21振幅/H0.80.60.40.200100020003000400050006000频率/Hz70008000900010000
>>fs=20000; wp=2*pi*2100/fs; ws=2*pi*8000/fs; >>Rp=0.5; >>Rs=30; >>Ts=1/fs;
>>Wp=2/Ts*tan(wp/2);Ws=2/Ts*tan(ws/2); >> [N,Wn]=ellipord(Wp,Ws,Rp,Rs,'s'); >> [z,p,k]=ellipap(N,Rp,Rs); >> [Bap,Aap]=zp2tf(z,p,k); >>[b,a]=lp2lp(Bap,Aap,Wn); >> [bz,az]=bilinear(b,a,fs); >>[H,f]=freqz(bz,az,512,fs);
>>plot(f,abs(H)); title('椭圆低通滤波器'); grid on; xlabel('频率/Hz'); ylabel('振幅
/dB')
>> Fs=20000; >>Flp=2100; >>Fls=8000; >>Wp=2*Flp/Fs; >>Ws=2*Fls/Fs; >>Rp=0.5; >>Rs=30;
>> [N,Wn]=cheb1ord(Wp,Ws,Rp,Rs); >> [b,a]=cheby1(N,Rp,Wn); >> [hw,w]=freqz(b,a);
>> plot(w/pi,abs(hw)); grid on;
>>xlabel('ω/π');ylabel('幅度(dB)'); title('切比雪夫 I 型幅频响应')
切比雪夫 I 型幅频响应10.90.80.7幅度(dB)0.60.50.40.30.20.1000.10.20.30.40.5ω/π0.60.70.80.91
>> Fs=20000; >>Flp=2100; >>Fls=8000; >>Wp=2*Flp/Fs; >>Ws=2*Fls/Fs; >>Rp=0.5; >>Rs=30;
>> [N,Wn]=cheb2ord(Wp,Ws,Rp,Rs); >> [b,a]=cheby2(N,Rs,Wn); >> [hw,w]=freqz(b,a); >> plot(w/pi,abs(hw)); grid on;