实验六 用双线性变换法设计IIR数字滤波器
一、实验目的
? 学会运用MATLAB设计数字低通、带通、高通、带阻滤波器的设计方法。 二、实验涉及的matlab子函数 bilinear
功能:双线性变换——将s域映射到z域。 调用格式:
[numd,dend]= bilinear (num,den,Fs),将模拟域系统函数转换为数字域的系统函数,Fs为采样频率。 三、实验原理
下面举例说明用双线性变换法设计各种数字滤波器的过程。
例1、 采用双线性变换法设计一个巴特沃斯数字低通滤波器,要求:wp=0.25*pi,
rp=1db,ws=0.4*pi,as=15db,滤波器采样频率Fs=100hz。
MATLAB源程序为:
%数字滤波器指标
wpd=0.25*pi; %滤波器的通带截止频率 wsd=0.4*pi; %滤波器的阻带截止频率 Rp=1;As=15; %输入滤波器的通阻带衰减指标 %转换为模拟原型滤波器指标 Fs=100;T=1/Fs; wp=(2/T)*tan(wpd/2); ws=(2/T)*tan(wsd/2); %模拟原型滤波器计算
[n,wc]=buttord(wp,ws,Rp,As,'s') %计算阶数n和截止频率 [z0,p0,k0]=buttap(n); %归一化切比雪夫1型原型设计 ba=k0*poly(z0); %求原型滤波器系数b aa=poly(p0); %求原型滤波器系数a [ba1,aa1]=lp2lp(ba,aa,wc);%变换为模拟低通滤波器 %用双线性变换法计算数字滤波器系数 [bd,ad]=bilinear(ba1,aa1,Fs) %双线性变换 %求数字系统的频率特性 [H,w]=freqz(bd,ad);
dbH=20*log10(abs(H)/max(abs(H))); %化为分贝值
subplot(2,2,1),plot(w,abs(H));
ylabel('|H|');title('幅度响应');axis([0,pi,0,1.1]);grid subplot(2,2,2),plot(w,angle(H));
ylabel('\\phi');title('相位响应');axis([0,pi,-4,4]);grid subplot(2,2,3),plot(w,dbH);title('幅度响应(dB)'); ylabel('dB');xlabel('频率');axis([0,pi,-40,5]);grid subplot(2,2,4),zplane(bd,ad); axis([-1.1,1.1,-1.1,1.1]);title('零极图');
运行结果为: n = 5
wc = 103.2016
bd = 0.0072 0.0362 0.0725 0.0725 0.0362 0.0072 ad = 1.0000 -1.9434 1.9680 -1.0702 0.3166 -0.0392 则所求滤波器的系统函数为
0.0072?0.0362z-1?0.0725z?2?0.0725z?3?0.0362z?4?0.0072z?5H(z)?
1?1.9434z-1?1.968z?2?1.0702z?3?0.3166z?4?0.0392z?5幅度响应142|H|相位响应0.50-20?0123-401零极图123幅度响应(dB)0Imaginary Part-10dB0.50-0.5-1-20-30-4001频率23-1
例2、采用双线性变换法设计一个椭圆数字高通滤波器,要求通带250hz,1db,阻带150hz,20db,滤波器采样频率为Fs=1000hz。 MATLAB源程序为:
%数字滤波器指标
fs=150;fp=250;Fs=1000;T=1/Fs;
wpd=fp/Fs*2*pi; %数字滤波器的通带截止频率 wsd=fs/Fs*2*pi; %数字滤波器的阻带截止频率 Rp=1;As=20; %输入滤波器的通阻带衰减指标 %转换为模拟滤波器指标
0Real Part1wp=(2/T)*tan(wpd/2); ws=(2/T)*tan(wsd/2); %模拟原型滤波器计算
[n,wc]=ellipord(wp,ws,Rp,As,'s') %计算阶数n和截止频率 [z0,p0,k0]=ellipap(n,Rp,As); %归一化椭圆原型设计 ba=k0*poly(z0); %求原型滤波器系数b aa=poly(p0); %求原型滤波器系数a [ba1,aa1]=lp2hp(ba,aa,wc);%变换为模拟高通滤波器 %用双线性变换法计算数字滤波器系数 [bd,ad]=bilinear(ba1,aa1,Fs) %双线性变换 %求数字系统的频率特性 [H,w]=freqz(bd,ad);
dbH=20*log10(abs(H)/max(abs(H))); %化为分贝值 %
subplot(2,2,1),plot(w/2/pi*Fs,abs(H));
ylabel('|H|');title('幅度响应');axis([0,Fs/2,0,1.1]);grid subplot(2,2,2),plot(w/2/pi*Fs,angle(H)/pi*180);
ylabel('\\phi');title('相位响应');axis([0,Fs/2,-180,180]);grid subplot(2,2,3),plot(w/2/pi*Fs,dbH); title('幅度响应(dB)');axis([0,Fs/2,-40,5]); ylabel('dB');xlabel('频率(hz)');grid subplot(2,2,4),zplane(bd,ad); axis([-1.1,1.1,-1.1,1.1]);title('零极图'); 运行结果为
n = 3
wc = 2.0000e+003
bd = 0.2545 -0.4322 0.4322 -0.2545 ad = 1.0000 0.1890 0.7197 0.1574
实验六 用双线性变换法设计IIR数字滤波器



