用雙線性變換法設計IIR數字濾波器
目的
熟悉模擬巴特沃茲(Batterworth)濾波器設計和用雙線性變換去設計IIR數字濾波器的方法。
內容與要求
(1)編寫用雙性變換法設計巴特沃茲低通IIR數字濾波器的程式,要求通帶 內頻率低於0.2pirad時,容許幅度誤差在1dB之內,頻率在0.3pirad到pirad 之間的阻帶衰減大於10dB。
(2)用雙線性變換法設計Butterworth低通IIR數字濾波器,要求使用buttord, butter和bilinear函式。濾波器技術指標:取樣頻率1Hz,通帶內臨界頻率0.2Hz,通帶內衰減小於1dB;阻帶臨界頻率0.3Hz,阻帶內衰減大於25dB。
(3)以pi/64為取樣間隔,在螢幕上打印出數字濾波器的頻率區間[0,pi] 上的幅 頻響應特性曲線(|H(ejw)|或20lg|H(ejw)|)。
(4)在螢幕上打印出H(z)的分子,分母多項式係數。
程式與結果
clear all;
wp=0.2*pi;
ws=0.3*pi;
Rp=1;
Rs=10;
Fs=1;
[N,Wn]=buttord(wp,ws,Rp,Rs,'s');
[Z,P,K]=buttap(N);
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);
[bz,az]=bilinear(b,a,Fs);
[H,W]=freqz(bz,az);
subplot(2,1,1);
plot(W/pi,abs(H));
grid;
xlabel('頻率');
ylabel('幅度');
subplot(2,1,2);
plot(W/pi,20*log10(abs(H)));
grid;
xlabel('頻率');
ylabel('幅度(dB)');
clear all;
wp=0.2*2*pi;
ws=0.3*2*pi;
Rp=1;
Rs=25;
Fs=1;
Ts=1/Fs;
wp1=wp*Ts;
ws1=ws*Ts;
wp2=2*Fs*tan(wp1/2);
ws2=2*Fs*tan(ws1/2);
[N,Wn]=buttord(wp2,ws2,Rp,Rs,'s');
[Z,P,K]=buttap(N);
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);
[bz,az]=bilinear(b,a,Fs);
[H,W]=freqz(bz,az);
subplot(2,1,1);
plot(W/pi,abs(H));
grid;
xlabel('頻率');
ylabel('幅度');
subplot(2,1,2);
plot(W/pi,20*log10(abs(H)));
grid;
xlabel('頻率');
ylabel('幅度(dB)');
clear all;
wp=0.2*2*pi;
ws=0.3*2*pi;
Rp=1;
Rs=25;
Fs=1;
Ts=1/Fs;
wp1=wp*Ts;
ws1=ws*Ts;
wp2=2*Fs*tan(wp1/2);
ws2=2*Fs*tan(ws1/2);
[N,Wn]=buttord(wp2,ws2,Rp,Rs,'s');
[Z,P,K]=buttap(N);
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);
[bz,az]=bilinear(b,a,Fs);
[H,W]=freqz(bz,az,64);
subplot(2,2,1);
plot(W/pi,abs(H));
grid;
xlabel('頻率');
ylabel('幅度');
subplot(2,1,2);
plot(W/pi,20*log10(abs(H)));
grid;
xlabel('頻率');
ylabel('幅度(dB)');
bz
az
bz =
0.0179 0.1072 0.2681 0.3575 0.2681 0.1072 0.0179
az =
1.0000 -0.6019 0.9130 -0.2989 0.1501 -0.0208 0.0025
- 模擬結果分析
圖一:通帶截止頻率為0.2prad,阻帶截止頻率為0.3prad,圖中橫座標w是數字頻率,對應的模擬頻率為0-fs/2。
圖二:通帶截止頻率為0.4prad,阻帶截止頻率為0.6prad
五、實驗問題解答與體會
通過這次實驗,我學會了如何看低通濾波器的幅頻特性,並掌握了用雙線性變換法設計巴特沃斯低通IIR數字濾波器的方法。雙線性變換法首先根據模擬濾波器的指標設計出相應的模擬濾波器,然後再講設計好的模擬濾波器轉換成滿足給定指標的數字濾波器。