数字信号处理实验六 IIR数字滤波器设计
1.了解三种滤波器,即椭圆滤波器,切比雪夫滤波器和巴特沃斯滤波器; 2.学会上述三种滤波器的设计方法;
3.根据滤波器要求,学会使用matlab生成上述三种滤波器;
一.实验器材
带有matlab软件的计算机一台 二.实验原理
使用双线性变换的IIR数字滤波器的设计过程包括两个步骤。在第一步,确定滤波器的阶数N和从规格确定的频率缩放因子Wn,在Matlab语句中使用如下: [N, wn]=buttord(wp, ws, Rp, Rs); [N, wn]=cheb1ord(wp, ws, Rp, Rs); [N, wn]=cheb2ord(wp, ws, Rp, Rs); [N, wn]=ellipord(wp, ws, Rp, Rs);
第二步,使用这些参数,确定传递函数的系数,在matlab语句中使用如下: [a, b]=butter(N, wn); [a, b]=cheb1(N, wn); [a, b]=cheb2(N, wn); [a, b]=ellip(N, wn);
所获得的传递函数的形式如下:
b(1)?b(2)Z-1???b(N?1)Z-N H(Z)?-1-Na(1)?a(2)Z???a(N?1)Z三.实验内容及代码
项目一
设计一个IIR低通滤波器,其规格如下:通带截止频率Fp=800Hz,阻带截止频率Fs=1000Hz,通带波纹Rp=0.5dB,阻带波纹Rs=40dB;采样频率FT=4kHz; (1) 确定滤波器的Wp,Ws,Rp,Rs,并决定传输函数的分子分母系数;
(2) 利用公式9-1,确定满足要求的最小阶次N和和截止频率Wn (3) 利用公式9-1,画出滤波器的增益响应;
代码如下:
function P6-1
wp=input('normalized passband edge = ');
ws=input('normalized stopband edge = '); rp=input('passband ripple in db = ');
rs=input('minimum stopband attenuation in db = '); [N1,Wn1]=ellipord(wp,ws,rp,rs); [b1,a1]=ellip(N1,rp,rs,Wn1);
[h1,omega1]=freqz(b1,a1,256);
subplot(2,2,1);plot(omega1/pi,20*log10(abs(h1)));grid; xlabel('\\omega/\\pi'); ylabel('gain,db');
title('IIR Elliptic Lowpass Filter'); disp('N1'),disp(N1); disp('Wn1'),disp(Wn1); disp('a1'),disp(a1); disp('b1'),disp(b1);
[N2,Wn2]=cheb1ord(wp,ws,rp,rs); [b2,a2]=cheby1(N2,rp,Wn2,'low'); [h2,omega2]=freqz(b2,a2,256);
subplot(2,2,2);plot(omega2/pi,20*log10(abs(h2)));grid; xlabel('\\omega/\\pi'); ylabel('gain,db');
title('Type I chebyshev lowpass Filter'); disp('N2'),disp(N2); disp('Wn2'),disp(Wn2) disp('a2'),disp(a2); disp('b2'),disp(b2);
[N3,Wn3]=cheb2ord(wp,ws,rp,rs); [b3,a3]=cheby2(N3,rs,Wn3); [h3,omega3]=freqz(b3,a3,256);
subplot(2,2,3);plot(omega3/pi,20*log10(abs(h3)));grid; xlabel('\\omega/\\pi'); ylabel('gain,db');
title('Type II chebyshev lowpass Filter'); disp('N3'),disp(N3); disp('Wn3'),disp(Wn3) disp('a3'),disp(a3); disp('b3'),disp(b3);
[N4,Wn4]=buttord(wp,ws,rp,rs); [b4,a4]=butter(N4,Wn4);
[h4,omega4]=freqz(b4,a4,256);
subplot(2,2,4);plot(omega4/pi,20*log10(abs(h4)));grid; xlabel('\\omega/\\pi'); ylabel('gain,db');
title('IIR Butterworth lowpass Filter'); disp('N4'),disp(N4); disp('Wn4'),disp(Wn4); disp('a4'),disp(a4); disp('b4'),disp(b4);
normalized passband edge = 1600/4000 normalized stopband edge = 2000/4000
passband ripple in db = 0.5
minimum stopband attenuation in db = 40 N1 5 Wn1
0.4000 a1
1.0000 -1.8107 2.4947 -1.8801 0.9537 -0.2336 b1
0.0528 0.0797 N2 8 Wn2
0.4000 a2
Columns 1 through 8
1.0000 -3.8656 -1.4343
Column 9 0.2381 b2
Columns 1 through 8
0.0003 0.0028 0.0028
Column 9 0.0003 N3 8 Wn3
0.5000 a3
Columns 1 through 8
1.0000 -0.0409 0.0240
Column 9 0.0040 b3
Columns 1 through 8
0.0623 0.2063 0.2063
Column 9 0.0623 N4 18
0.1295 0.1295 0.0797 0.0528 8.2625 -11.6939 11.7756 -8.5442 0.0097 0.0194 0.0243 0.0194 1.4080 0.2320 0.6302 0.1717 0.4451 0.6708 0.7673 0.6708 4.3559 0.0097 0.1073 0.4451
Wn4
0.4194 a4
Columns 1 through 8
1.0000 -2.8967 6.2773 -9.2059 10.9677 -10.3830 -5.4399
Columns 9 through 16
3.0421 -1.4302 0.5678 -0.1882 0.0517 -0.0116 8.2442
0.0021
-0.0003
Columns 17 through 19
0.0000 -0.0000 0.0000 b4
Columns 1 through 8
0.0000 0.0000 0.0003 0.0019 0.0070 0.0725
Columns 9 through 16
0.0997 0.1107 0.0997 0.0725 0.0423 0.0019
Columns 17 through 19
0.0003 0.0000 0.0000 则椭圆滤波器的最小阶次N= ;截止频率Wn= ; 传输函数H(z)=
切比雪夫I型的最小阶次N= ;截止频率Wn= 传输函数H(z)=
切比雪夫II型的最小阶次N= ;截止频率Wn= 传输函数H(z)=
巴特沃斯的最小阶次N= ;截止频率Wn= ; 传输函数H(z)=
传输函数增益响应如下图所示:
0.0195 0.0195 ; 0.0423 0.0070
; IIR Elliptic Lowpass Filter5000-100Type I chebyshev lowpass Filtergain,db-50-100-15000.51?/?Type II chebyshev lowpass Filtergain,db-200-300-40000.51?/?IIR Butterworth lowpass Filter02000gain,db-50gain,db00.5?/?1-200-100-40000.5?/?1项目二
利用切比雪夫I型设计一个IIR高通滤波器,其规格如下:通带截止频率
Fp=700Hz,阻带截止频率Fs=500Hz,通带波纹Rp=1dB,阻带波纹Rs=32dB;采
样频率FT=2kHz;
(1) 确定滤波器的Wp,Ws,Rp,Rs,并决定传输函数的分子分母系数; (2) 利用公式9-2,确定满足要求的最小阶次N和和截止频率Wn; (3) 利用公式9-2,画出滤波器的增益响应; 代码如下:
function P6-2
wp=input('normalized passband edge = '); ws=input('normalized stopband edge = '); rp=input('passband ripple in db = ');
rs=input('minimum stopband attenuation in db = '); [N,Wn]=cheb1ord(wp,ws,rp,rs); [b,a]=cheby1(N,rp,Wn,'high'); [h,omega]=freqz(b,a,256);
plot(omega/pi,20*log10(abs(h)));grid; xlabel('\\omega/\\pi'); ylabel('gain,db');
title('Type Ichebyshev highpass Filter'); disp('N'),disp(N); disp('Wn'),disp(Wn) disp('a'),disp(a); disp('b'),disp(b);
normalized passband edge = 1400/2000 normalized stopband edge = 1000/2000