第四章数字滤波第二节数字滤波的设计通信与电子信息当中,在对信号作分析与处理时,常会用到有用信号叠加无用噪声的问题。
这些噪声信号有的是与信号同时产生的,有的是在传输过程中混入的,在接收的信号中,必须消除或减弱噪声干扰,这是信号处理中十分重要的问题。
根据有用信号与噪声的不同特性,消除或减弱噪声,提取有用信号的过程就称为滤波。
滤波器的种类很多,实现方法也多种多样,本章利用Matlab来进行数字滤波器的设计。
数字滤波器是一离散时间系统,它对输入序列x(n)进行加工处理后,输出序列y(n),并使y(n)的频谱与x(n)的频谱相比发生某种变化。
由DSP理论得知,无限长冲激响应(IIR)需要递归模型来实现,有限长冲激响应(FIR)滤波器可以采用递归的方式也可采用非递归的方式实现。
本章把FIR与IIR滤波器分别用Matlab进行分析与设计。
数字滤波器的结构参看《数字信号处理》一书。
数字滤波器的设计一般经过三个步骤:1.给出所需滤波器的技术指标。
2.设计一个H(Z),使其逼近所需要的技术指标。
3.实现所设计的H(Z)。
4.2.1 IIR数字滤波器设计设计IIR数字滤波器的任务就是寻求一个因果、物理可实现的系统函数H(z),使它的频响H(e jω)满足所希望得到的低通频域指标,即通带衰减A p、阻带衰减A r、通带截频ωp、阻带截频ωr。
而其它形式的滤波器由低通的变化得到。
采用间接法设计IIR数字滤波器就是按给定的指标,先设计一个模拟滤波器,进而通过模拟域与数字域的变换,求得物理可实现的数字滤波器。
从模拟滤波器变换到数字滤波器常用的有:脉冲响应不变法和双线性变换法。
IIR滤波器的设计过程如下数字频域指标→模拟频域指标→设计模拟滤波器H(S) →设计数字滤波器H(z) 1. 模拟滤波器简介模拟滤波器的设计方法已经发展得十分成熟,常用的高性能模拟低通滤波器有巴特沃斯型、切比雪夫型和椭圆型,而高通、带通、带阻滤波器则可以通过对低通进行频率变换来求得。
必须指出,这三种滤波器都是非线性的相频特性。
具体设计方法参见《数字信号处理》一书。
(1)巴特沃斯低通滤波器的特点是:通、阻带均为单调下降。
这种单调下降的特性使得系统的误差分布不均匀。
在设计中,如果在通带满足指标,阻带指标就过于好了。
或者说,在阻带满足指标,通带指标也过于好了。
这样不利于以最小的阶数来满足设计指标。
(2)切比雪夫模拟低通滤波器分成Ι型和ΙΙ型:Ι型是通带等波纹,阻带单调下降;ΙΙ型滤波器是通带单调下降,阻带等波纹。
切比雪夫的等波纹特性使得可以用较小的阶数设计出符合指标的滤波器。
(3)椭圆滤波器特点是通、阻带均为等波纹。
椭圆滤波器的误差均匀分布在通、阻带,比较上面几种滤波器,在同样衰耗指标下,椭圆滤波器所要求的阶数最小。
在同样阶数情况下,椭圆滤波器的通带到阻带的变化最陡峭、性能最好。
2.模拟滤波器映射到数字滤波器从模拟滤波器变换到数字滤波器常用的有:冲激响应不变法和双线性变换法。
(1)冲激响应不变法冲激响应不变法的基本思路为:设模拟滤波器的单位冲激响应为h a (t ),数 字滤波器的单位脉冲响应h(n),是对h a (t )的均匀取样,即H(S)−−−→−拉氏逆变换h(t)−−→−抽样 h(n)= h(nT) −−→−变换z H(z)冲激响应不变法由于保持了模拟滤波器的冲激响应在取样时刻的取样值,所以 具有较好的时间特性。
但由于从模拟域(s 域)变换到数字域(z 域)的映射关系 不是一一对应的关系,因而频谱混叠难以避免, 所以在实际应用中有它的局限性。
3. Matlab 滤波器设计函数简介使用MATLAB 信号处理工具箱中提供的函数可以很容易地实现IIR 滤波器设计。
常用的IIR 数字滤波器设计函数有:(1)IIR 滤波器阶数(order )选择buttord - 巴特沃斯(Butterworth )滤波器阶数选择cheb1ord - 切比雪夫(Chebyshev )I 型滤波器阶数选择cheb2ord - 切比雪夫(Chebyshev )II 型滤波器阶数选择ellipord - 椭圆(Elliptic )滤波器阶数选择buttord 用来确定巴特沃斯滤波器的阶数:[N,Wc] = buttord (Wp,Wr,Ap,Ar,option s)Ap,Ar 为通带最大衰减和阻带最小衰减,以dB 为单位;Wp,Wr 为归一化通带截频和阻带截频。
Option s=’low’, ’high’, ’bandpass’, ’stop’, ’s’, 分别对应低通、高通、带通、带阻、 模拟滤波器,默认情况下,为低通或带通。
对于带通和带阻滤波器Wp=[Wp1,Wp2], Wp1和 Wp2为通带的上、下截频,Wr=[Wr1,Wr2],Wr1和Wr2分别为阻带的上、 下截频。
若为模拟滤波器定阶,令Option s= ’s’, 则Wp 和Wr 以(归一或非归一) 给出,因此可大于1。
输出参数N 为滤波器的阶数,Wc 为归一化3dB 截频。
若Ap=3dB ,则Wc= Wp 。
其他滤波器的定阶函数类似buttord的格式:切比雪夫I型滤波器[N,Wc] = cheb1ord(Wp, Wr, Ap, Ar)切比雪夫II型滤波器[N,Wc] = cheb2ord(Wp, Wr, Ap, Ar)椭圆滤波器[N,Wc] = ellipord(Wp, Wr, Ap, Ar)(2)完整的滤波器设计函数,根据滤波器阶数和通带截频设计出实际数字滤波器的H(z)(模拟域到数字域的变换只采用双线性变换法):butter - 巴特沃斯(Butterworth)滤波器设计cheby1 -切比雪夫(Chebyshev)I型滤波器设计cheby2 - -切比雪夫(Chebyshev)II型滤波器设计ellip - 椭圆(Elliptic)滤波器设计maxflat - 通用的巴特沃斯(Butterworth)低通滤波器设计yulewalk - Yule-Walker滤波器设计(直接数字滤波器设计法)butter的格式如下:[b,a] = butter(N,Wc,option s)[z,p,k] = butter(N,Wc,option s)[A,B,C,D] = butter(N,Wc,option s)N为滤波器的阶数,Wc为频率归一化后的3dB截频:0 < Wc < 1。
Option s=’low’, ’high’, ’bandpass’, ’stop’, ’s’, 分别对应低通、高通、带通、带阻、模拟滤波器,默认情况下,为低通或带通。
对于带通和带阻滤波器,Wc=[W1,W2],W1和W2分别为通带的上、下截频。
输出变量的三种格式对应着滤波器系统函数H (z)的分子分母多项式形式、零极点-增益形式和状态空间形式。
若设计模拟滤波器,令Option s= ’s’, 则Wc以rad/ s(归一化或非归一化)给出,因此可大于1。
例1.设计一个数字低通滤波器,要求在0~0.2π内衰耗不大于3dB,在0.6π~π内衰耗不小于60dB。
解:若模拟低通原型采用巴特沃斯滤波器:[N,Wc]=buttord(0.2,0.6,3,60);[b,a]=butter(N,Wc);freqz(b,a);axis([0,1,-120,0]);可见,相位为非线性。
例2 使用脉冲响应不变法设计一个数字带通滤器,其指标为:1)3dB 通带中心频率在 0Ω = 0.5π 2)上截频2c Ω = 0.55π,下截频1c Ω = 0.45π 3) 在阻带r Ω = 0.6π处,最小衰耗A =10dB设取样周期T =5π×10-6s,要求|Ω|>0Ω衰耗曲线单调增加。
解:(1)确定数字频率指标omega0=0.5*pi; %通带中心频率omegac1=0.45*pi ; omegac2=0.55*pi; Apmax=3; %通带截频omegar2=0.6*pi; Armin=10;T=5*pi*10^(-6); %取样间隔(2)利用脉冲响应不变法设计数字滤波器1) 按给定数字频率求得相应的模拟角频率wc1=omegac1/T; wc2=omegac2/T;w0=omega0/T;omegar1=omega0-(omegar2-omega0);wr1=omegar1/T; wr2=omegar2/T;B=wc2-wc1;2) 将指标转换为归一化模拟低通频率指标norm_wr1=(((wr1^2)-(w0^2))/(B*wr1));norm_wr2=(((wr2^2)-(w0^2))/(B*wr2));norm_wc1=(((wc1^2)-(w0^2))/(B*wc1));norm_wc2=(((wc2^2)-(w0^2))/(B*wc2));3) 设计归一化模拟低通滤波器确定归一化截频if (abs(norm_wr1)-abs(norm_wr2))>0norm_wr=abs(norm_wr2);elsenorm_wr=abs(norm_wr1);endnorm_wc=1;确定归一化模拟低通滤波器阶数N=buttord(norm_wc,norm_wr,Apmax ,Armin,'s');设计归一化模拟低通滤波器[b_LP,a_LP]=butter(N,norm_wc,'s');4) 把归一化模拟低通滤波器转换为模拟带通滤波器[b_BP,a_BP]=lp2bp(b_LP,a_LP,w0, B);5) 利用脉冲响应不变法把模拟滤波器转换为数字滤波器Fs=1/T;[b,a]=impinvar(b_BP,a_BP,Fs);w=linspace(0,2*pi,500);h=freqz(b,a,w);plot(w,20*log10(abs(h))); axis([0,2*pi,-50,20]); gridxlabel('frequency (rad)');ylabel('gain (dB)');sys=tf(b,a,T)(2) 双线性变换法双线性变换法克服了脉冲响应不变法存在频谱混叠的缺点, 但在设计过程中一定要注意,由于宽频带压缩到较窄的频率范围,导致了频率畸变。
其基本思想是:首先按给定的指标设计一个模拟滤波器,通过适当的数学变换方法将s域映射到z 域,把无限宽的频带变换成有限宽频带。
由于在实现数字化以前已经对频带进行了压缩,所以在数字化以后的频响可以做到无频谱混叠。
该法可以用来设计各种不同频带要求的数字滤波器,所以获得广泛应用。
例3:按[例2]的指标使用双线性变换法设计一个数字带通滤波器。
解:(1)给定数字频率指标omega0=0.5*pi; %通带中心频率omegac1=0.45*pi; omegac2=0.55*pi; Apmax=3; %通带截频omegar2=0.6*pi; Armin=10;T=5*pi*10^(-6); %取样间隔(2)用双线性变换法设计滤波器1)按给定数字频率求得相应的模拟角频率:频率预畸变omegar1=omega0-(omegar2 - omega0);wc1=(2/T)*tan(omegac1/2); wc2=(2/T)*tan(omegac2/2);wr1=(2/T)*tan(omegar1/2); wr2=(2/T)*tan(omegar2/2);w0=(2/T)*tan(omega0/2);B=wc2-wc1;2) 将指标转换为归一化模拟低通频率指标norm_wr1=(((wr1^2)-(w0^2))/(B*wr1));norm_wr2=(((wr2^2)-(w0^2))/(B*wr2));norm_wc1=(((wc1^2)-(w0^2))/(B*wc1));norm_wc2=(((wc2^2)-(w0^2))/(B*wc2));3) 设计归一化模拟低通滤波器确定归一化截频:if (abs(norm_wr1)-abs(norm_wr2))>0norm_wr=abs(norm_wr2);elsenorm_wr=abs(norm_wr1);endnorm_wc=1;确定归一化模拟低通滤波器阶数:N=buttord(norm_wc,norm_wr,Apmax,Armin,'s');设计归一化模拟低通滤波器:[b_LP,a_LP]=butter(N,norm_wc,'s');4) 把归一化模拟低通滤波器转换为模拟带通滤波器[b_BP,a_BP]=lp2bp(b_LP,a_LP,w0,B);5) 转换为数字滤波器Fs=1/T;[b,a]=bilinear(b_BP,a_BP,Fs);w=linspace(0,2*pi,500);h=freqz(b,a,w);plot(w,20*log10(abs(h))); axis([0,2*pi,-120,20]); gridxlabel('frequency (rad)');ylabel('gain (dB)');sys=tf(b,a,T)例4 :若信号由5Hz、15Hz和30Hz三个正弦频率成分构成。