IIR数字滤波器设计原理
利用双线性变换设计IIR滤波器(只介绍巴特沃斯数字低通滤波器的设计),首先要设计出满足指标要求的模拟滤波器的传递函数Ha(s),然后由Ha(s)通过双线性变换可得所要设计的IIR滤波器的系统函数H(z)。
如果给定的指标为数字滤波器的指标,则首先要转换成模拟滤波器的技术指标,这里主要是边界频率
??wp和ws的转换,对
?p和?s指标不作变化。边界频率的
转换关系为
21tan(w)T2。接着,按照模拟低通滤波器的技术指标根据相应
设计公式求出滤波器的阶数N和3dB截止频率?c;根据阶数N查巴特沃斯归一化低通滤波器参数表,得到归一化传输函数Ha(p);最后,将
p?s?c代入Ha(p)去归一,得到实际的模拟滤波器传输函数Ha(s)。之后,通过双线性变换法转换
21?z?1s?T1?z?1,得到所要设计的IIR滤波器的系统函数H(z)。 公式
步骤及内容
1) 用双线性变换法设计一个巴特沃斯IIR低通数字滤波器。设计指标参数为:
在通带内频率低于0.2?时,最大衰减小于1dB;在阻带内?0.3?,??频率区间上,最小衰减大于15dB。
2) 以0.02?为采样间隔,绘制出数字滤波器在频率区间?0,?/2?上的幅频响应特
性曲线。 3) 程序及图形
程序及实验结果如下:
%%%%%%%%%%%%%%%%%% %iir_1.m
%lskyp
%%%%%%%%%%%%%%%%%% rp=1;rs=15;
wp=.2*pi;ws=.3*pi;
wap=tan(wp/2);was=tan(ws/2); [n,wn]=buttord(wap,was,rp,rs,'s'); [z,p,k]=buttap(n); [bp,ap]=zp2tf(z,p,k); [bs,as]=lp2lp(bp,ap,wap); [bz,az]=bilinear(bs,as,.5); [h,f]=freqz(bz,az,256,1); plot(f,abs(h));
title('双线性z变换法获得数字低通滤波器,归一化频率轴'); xlabel('\\omega/2\\pi');
ylabel('低通滤波器的幅频相应');grid; figure;
[h,f]=freqz(bz,az,256,100); ff=2*pi*f/100; absh=abs(h);
plot(ff(1:128),absh(1:128));
title('双线性z变换法获得数字低通滤波器,频率轴取[0,\\pi/2]'); xlabel('\\omega');
ylabel('低通滤波器的幅频相应');grid on; 运行结果:
双线性z变换法获得数字低通滤波器,归一化频率轴10.90.8低通滤波器的幅频相应0.70.60.50.40.30.20.1000.050.10.150.20.25?/2?0.30.350.40.450.5
双线性z变换法获得数字低通滤波器,频率轴取[0,?/2]10.90.8低通滤波器的幅频相应0.70.60.50.40.30.20.1000.20.40.60.811.21.41.6?
窗函数法设计FIR数字滤波器原理
如果所希望的滤波器的理想频率响应函数为Hd(ejw),则其对应的单位脉冲响应为
1hd(n)?2???H??d(ejw)ejwndw
窗函数设计法的基本原理是用有限长单位脉冲响应h(n)逼近hd(n)。由于
hd(n)往往是无限长序列,且是非因果的,所以用窗函数w(n)将hd(n)截断,并进行加权处理,得到:
h(n)?hd(n)?w(n)
h(n)就作为实际设计的FIR数字滤波器的单位脉冲响应序列,其频率响应函
jwH(e)为 数
H(e)??h(n)e?jwnjwn?0N?1
式中,N为所选窗函数w(n)的长度。
用窗函数法设计的滤波器性能取决于窗函数w(n)的类型及窗口长度N的取值。设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度。设待求滤波器的过渡带用?w表示,它近似等于窗函数主瓣宽度。因过渡带?w近似与窗口长度成反比,N?A/?w,A决定于窗口形式。例如,矩形窗A=4π,海明窗A=8π等。按照过渡带及阻带衰减情况,选择窗函数形式。原则是在保证阻带衰减满足要求的情况下, 尽量选择主瓣窄的窗函数。
这样选定窗函数类型和窗口长度N后,求出单位脉冲响应
h(n)?hd(n)?w(n),再求出H(ejw)。H(ejw)是否满足要求,要进行验算。一般
jwh(n)H(e)。如果要在的尾部加零使长度满足2的整数次幂,以便用FFT计算jw观察细节,补零点数增多即可。如果H(e)不满足要求,则要重新选择窗函数
类型和长度N,再次验算,直至满足要求。
如果要求线性相位特性,则h(n)还必须满足:
h(n)??h(N?1?n)
根据上式中的正、负号和长度N的奇偶性又将线性相位FIR滤波器分成四类。要根据所设计的滤波特性正确选择其中一类。例如,要设计线性相位低通特性,可选择h(n)?h(N?1?n)一类, 而不能选h(n)??h(N?1?n)一类。 1) 根据下列技术指标,设计一个线性相位的FIR数字低通滤波器。通带截止频
w?0.2?率p,通带允许波动Ap?0.25dB;阻带截止频率wS?0.2?,阻带衰
减AS?50dB。
程序如下:
%%%%%%%%%%%%%%%%%% %fir_1.m %lskyp
%%%%%%%%%%%%%%%%%% wp=0.2*pi; N=10;
b=fir1(N,wp/pi,boxcar(N+1)); t=0:10;
subplot(211) stem(t,b);
title('滤波器的单位脉冲响应'); [h,w]=freqz(b,1,256,1); h=abs(h); subplot(212) plot(w,h)
title('幅频响应')
运行结果:
滤波器的单位脉冲响应0.20.150.10.050012345幅频响应16789100.50
2) 写出1)中所设计的低通滤波器的单位脉冲响应;并调用fir1()函数得到所
设计的低通滤波器的单位脉冲响应,调用fft()函数进行频响验证。打印输出各部分结果。 答:
单位脉冲响应:
00.050.10.150.20.250.30.350.40.450.5