第3章 无限长单位脉冲响应
第3章 无限长单位脉冲响应(IIR)滤波器的设计方法
例3-1 设采样周期T=250μs (采样频率f s =4kHz),用脉冲响应不变法和双线性变换法设计一个三阶巴特沃兹滤波器,其3dB 边界频率为f c =1kHz。
[B,A]=butter(3,2*pi*1000,'s' ); [num1,den1]=impinvar(B,A,4000); [h1,w]=freqz(num1,den1); [B,A]=butter(3,2/0.00025,'s' ); [num2,den2]=bilinear(B,A,4000); [h2,w]=freqz(num2,den2); f=w/pi*2000; plot(f,abs(h1),'-.' ,f,abs(h2),'-' ); grid; xlabel(' 频率/Hz ')
ylabel(' 幅值/dB')
程序中第一个butter 的边界频率2π×1000,为脉冲响应不变法原型低通滤波器的边界频率;第二个butter 的边界频率2/T=2/0.00025,为双线性变换法原型低通滤波器的边界频率. 图3.1给出了这两种设计方法所得到的频响,虚线为脉冲响应不变法的结果;实线为双线性变换法的结果。脉冲响应不变法由于混叠效应,使得过渡带和阻带的衰减特性变差,并且不存在传输零点。同时,也看到双线性变换法,在z =-1即ω=π或f=2000Hz处有一个三阶传输零点,这个三阶零点正是模拟滤波器在Ω=∞处的三阶传输零点通过映射形成的。
例3-2 设计一数字高通滤波器,它的通带为400~500Hz ,通带内容许有0.5dB 的波动,阻带内衰减在小于317Hz 的频带内至少为19dB ,采样频率为1,000Hz 。
wc=2*1000*tan(2*pi*400/(2*1000));
wt=2*1000*tan(2*pi*317/(2*1000)); [N,wn]=cheb1ord(wc,wt,0.5,19,'s' ); [B,A]=cheby1(N,0.5,wn,'high' , 's' ); [num,den]=bilinear(B,A,1000); [h,w]=freqz(num,den); f=w/pi*500; plot(f,20*log10(abs(h)));
axis([0,500,-80,10]); grid; xlabel('') ylabel('幅度/dB')
图3.2给出了MATLAB 计算的结果,可以看到模拟滤波器在Ω=∞处的三阶零点通过高通变换后出现在ω=0(z=1)处,这正是高通滤波器所希望得到的。
例3-3 设计一巴特沃兹带通滤波器,其3dB 边界频率分别为f 2=110kHz和f 1=90kHz,在阻带f 3 = 120kHz处的最小衰减大于10dB ,采样频率f s =400kHz。
w1=2*400*tan(2*pi*90/(2*400));
w2=2*400*tan(2*pi*110/(2*400)); wr=2*400*tan(2*pi*120/(2*400)); [N,wn]=buttord([w1 w2],[0 wr],3,10,'s' ); [B,A]=butter(N,wn,'s' ); [num,den]=bilinear(B,A,400); [h,w]=freqz(num,den); f=w/pi*200; plot(f,20*log10(abs(h))); axis([40,160,-30,10]); grid; xlabel('频率/kHz')
ylabel('幅度/dB')
图3.3给出了MATLAB 计算的结果,可以看出数字滤波器将无穷远点的二阶零点映射为z=±1的二阶零点,数字带通滤波器的极点数是模拟低通滤波器的极点数的两倍。
例3-4 一数字滤波器采样频率f s = 1kHz ,要求滤除100Hz 的干扰,其3
dB 的边界频率为95Hz 和105Hz ,原型归一化低通滤波器为
w1=95/500; w2=105/500; [B,A]=butter(1,[w1, w2],'stop' ); [h,w]=freqz(B,A); f=w/pi*500; plot(f,20*log10(abs(h))); axis([50,150,-30,10]); grid; xlabel('频率/Hz' )
ylabel('幅度/dB')
图3.4为MATLAB 的计算结果