1、1基于 matlab 的数字滤波器设计【摘要】本文在分析数字滤波器设计理论的基础上,运用 matlab数学处理软件编程,设计出符合要求的 IIR和 FIR数字滤波器,为数字滤波器的设计和应用提供了较为有效的方法。 【关键字】IIR,FIR,数字滤波器,matlab 1.引言 数字滤波过程是一个计算的过程,由 A/D转换器、数字滤波器和 D/A转换器这三部分构成。将采集到的模拟信号经由 A/D转换器转换成数字信号,通过数字滤波器后,过滤掉不需要的频率成分,再经由 D/A转换器转换成模拟信号输出。在手算设计过程中需要大量较为繁琐的计算过程,费时费力且不能保证设计效果。所以,目前设计过程通常借助计算
2、机 matlab软件编程来加以实现。 2.IIR 数字滤波器设计 IIR 数字滤波器的设计思路通常是先设计出符合要求的模拟滤波器,然后再用数字滤波器进行逼近。它的设计方法有冲激响应不变法和双线性变换法这两种。matlab 软件工具箱中有几个专门设计 IIR型数字滤波器的函数,极大的方便了 IIR型数字滤波器的编程设计。 2.1 冲激响应不变法设计 由冲激响应不变法设计出的数字滤波器存在频率特性混叠现象,只在折叠频率范围内才可以与模拟滤波器有较好的逼近效果。所以,使用2冲激响应不变法设计的低通、带通滤波器都有较好的效果,但是设计的高通、带阻滤波器效果不是很好。 由 matlab实现该设计实例:设
3、计数字低通滤波器,要求通带、阻带具有单调下降特性。设计参数有:p=0.2rad,p=1dB,s=0.35rad,s=10dB。 部分程序如下:采用巴特沃斯滤波器进行设计 fp=0.1;fs=0.175;Fs=0.5;Rp=1;Rs=10;T=1/Fs; %参数输入 W1p=fp/Fs*2;W1s=fs/Fs*2; %归一化频率 N,Wn=buttord(W1p,W1s,Rp,Rs,s) ; %确定最小阶数和频率参数 z,p,k=buttap(N) ; bp,ap=zp2tf(z,p,k) ; bs,as=lp2lp(bp,ap,Wn*pi*Fs) ; bz,az=impinvar(bs,as,
4、Fs) ; %用冲激响应不变法进行模数变换 sys=tf(bz,az,T) ; %计算传输函数 H(z) H,W=freqz(bz,az,512,Fs) ; %计算频响参数 运行得到传输函数和特性曲线(图 1): 2.2 双线性变换法设计 因为双线性变换法不存在频率混叠现象,所以多种滤波器的设计都有较好的效果,但是有非线性频率失真现象的出现,需要预畸处理来解决。 3由 matlab实现该设计实例:设计数字低通滤波器,采样周期 T=2s,通带频率 wp=0.2rad/s,阻带频率 ws=0.35rad/s,抽样频率fs=0.5Hz,通带衰减 Rp=1dB,阻带衰减 Rs=10dB。 部分程序如下
5、:采用巴特沃斯滤波器进行设计 fs=0.5;wp=0.2*pi; ws=0.35*pi; Rp=1; Rs=10; Ts=1/fs; Wp=2/Ts*tan(wp/2) ;Ws=2/Ts*tan(ws/2) ; %参数转换 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) ; %运用双线性变换法进行模数转换 sys=tf(bz,az,T) ; %计算传输函数 H(z) H,f=freqz(bz,
6、az,512,fs) ; %计算频响参数 运行得到传输函数和特性曲线(图 2): 3.FIR 数字滤波器设计 FIR 型数字滤波器的特点是,在保证其幅度特性的同时可以得到较好的相位特性,但是它的阶数较高,计算量较大。FIR 型数字滤波器通常采用窗函数法进行设计。基本的设计思想是:根据给出的技术参数,选定滤波器的长度 N和窗函数 (n) ,使滤波器具有最窄的主瓣宽度和最小的旁瓣。 由 matlab实现该设计实例:加窗设计数字低通滤波器,采样频率4Fs=10KHz,通带 0f1.5KHz 内衰减小于 1dB,阻带 2.5KHzf上衰减大于 40dB。 部分程序如下:采用海宁窗进行设计 wp=0.3
7、*pi;wr=0.5*pi; trwidth=wr-wp; %计算过渡带宽 N=ceil(6.64*pi/trwidth)+1; %计算滤波器长度 N wc=(wr+wp)/2; %计算截止频率 hd=ideal_lp(wc,N) ; %计算理想脉冲响应 w_ham=(hamming(N) ); %求窗函数 h=hd.*w_ham; %计算实际脉冲响应 运行得到响应序列: 程序中滤波器的阶数 N=35,具体的系数 h(n)如下: 0.00088046 0.0016618 -1.7318e-018 -0.0032198 -0.0028792 0.0040973 0.0092184 -6.4572
8、e-018 -0.016736 -0.013622 0.017798 0.037591 -1.2743e-017 -0.066597 -0.058069 0.090643 0.30036 0.4 0.30036 0.090643 -0.058069 -0.066597 -1.2743e-017 0.037591 0.017798 -0.013622 -0.016736 -6.4572e-018 0.0092184 0.0040973 -0.0028792 -0.0032198 -1.7318e-018 0.0016618 0.00088046 54 总结 由上述设计可以看出利用 matlab软件编程,可以较为快速地设计出指定参数的 IIR型和 FIR型数字滤波器,从以上的 matlab仿真结果可以看出它们均可达到设计要求,操作快捷便利,大大减少了工作量。并且,matlab软件仿真的实用性较强,而且可以有效地对比滤波器特性,并能方便地调整其性能参数,满足设计要求,设计出更好更快捷的数字滤波器。