目的
熟悉模拟巴特沃兹(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数字滤波器的方法。双线性变换法首先根据模拟滤波器的指标设计出相应的模拟滤波器,然后再讲设计好的模拟滤波器转换成满足给定指标的数字滤波器。