一、数字滤波器数字滤波器是对数字信号实现滤波的线性时不变系统。数字滤波实质上是一种运算过程,实现对信号的运算处理。输入数字信号(数字序列)通过特定的运算转变为输出的数字序列,因此,数字滤波器本质上是一个完成特定运算的数字计算过程,也可以理解为是一台计算机。描述离散系统输出与输入关系的卷积和差分方程只是给数字信号滤波器提供运算规则,使其按照这个规则完成对输入数据的处理。时域离散系统的频域特性: ,其中 、 分别是数字滤波器的输出序列和输入序列的频域特性(或称为频谱特性), 是数字滤波器的单位取样响应的频谱,又称为数字滤波器的频域响应。输入序列的频谱 经过滤波后 ,因此,只要按照输入信号频谱的特点和处理信号的目的, 适当选择 ,使得滤波后的 满足设计的要求,这就是数字滤波器的滤波原理。数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。IIR 数字滤波器的特征是,具有无限持续时间冲激响应,需要用递归模型来实现,其差分方程为: 系统函数为: 设计IIR滤波器的任务就是寻求一个物理上可实现的系统函数H(z),使其频率响应H(z)满足所希望得到的频域指标,即符合给定的通带截止频率、阻带截止频率、通带衰减系数和阻带衰减系数。二、IIR数字滤波器设计方法IIR数字滤波器是一种离散时间系统,其系统函数为假设M≤N,当M>N时,系统函数可以看作一个IIR的子系统和一个(M-N)的FIR子系统的级联。IIR数字滤波器的设计实际上是求解滤波器的系数 和 ,它是数学上的一种逼近问题,即在规定意义上(通常采用最小均方误差准则)去逼近系统的特性。如果在S平面上去逼近,就得到模拟滤波器;如果在z平面上去逼近,就得到数字滤波器。1.用脉冲相应不变法设计IIR数字滤波器 利用模拟滤波器来设计数字滤波器,也就是使数字滤波器能模仿模拟滤波器的特性,这种模仿可以从不同的角度出发。脉冲响应不变法是从滤波器的脉冲响应出发,使数字滤波器的单位脉冲响应序列h(n)模仿模拟滤波器的冲激响应ha(t),即将ha(t)进行等间隔采样,使h(n)正好等于ha(t)的采样值,满足h(n)=ha(nT)式中,T是采样周期。如果令Ha(s)是ha(t)的拉普拉斯变换,H(z)为h(n)的Z变换,利用采样序列的Z变换与模拟信号的拉普拉斯变换的关系得 (1-1)则可看出,脉冲响应不变法将模拟滤波器的S平面变换成数字滤波器的Z平面,这个从s到z的变换z=esT是从S平面变换到Z平面的标准变换关系式。 图1-1脉冲响应不变法的映射关系 由(1-1)式,数字滤波器的频率响应和模拟滤波器的频率响应间的关系为(1-2) 这就是说,数字滤波器的频率响应是模拟滤波器频率响应的周期延拓。正如采样定理所讨论的,只有当模拟滤波器的频率响应是限带的,且带限于折叠频率以内时,即�(1-3)才能使数字滤波器的频率响应在折叠频率以内重现模拟滤波器的频率响应,而不产生混叠失真,即|ω|<π (1-4)但是,任何一个实际的模拟滤波器频率响应都不是严格限带的,变换后就会产生周期延拓分量的频谱交叠,即产生频率响应的混叠失真,如图7-4所示。这时数字滤波器的频响就不同于原模拟滤波器的频响,而带有一定的失真。当模拟滤波器的频率响应在折叠频率以上处衰减越大、越快时,变换后频率响应混叠失真就越小。这时,采用脉冲响应不变法设计的数字滤波器才能得到良好的效果。 图1-2脉冲响应不变法中的频响混叠现象 对某一模拟滤波器的单位冲激响应ha(t)进行采样,采样频率为fs,若使fs增加,即令采样时间间隔(T=1/fs)减小,则系统频率响应各周期延拓分量之间相距更远,因而可减小频率响应的混叠效应。脉冲响应不变法优缺点:从以上讨论可以看出,脉冲响应不变法使得数字滤波器的单位脉冲响应完全模仿模拟滤波器的单位冲激响应,也就是时域逼近良好,而且模拟频率Ω和数字频率ω之间呈线性关系ω=ΩT。因而,一个线性相位的模拟滤波器(例如贝塞尔滤波器)通过脉冲响应不变法得到的仍然是一个线性相位的数字滤波器。脉冲响应不变法的最大缺点是有频率响应的混叠效应。所以,脉冲响应不变法只适用于限带的模拟滤波器(例如,衰减特性很好的低通或带通滤波器),而且高频衰减越快,混叠效应越小。至于高通和带阻滤波器,由于它们在高频部分不衰减,因此将完全混淆在低频响应中。如果要对高通和带阻滤波器采用脉冲响应不变法,就必须先对高通和带阻滤波器加一保护滤波器,滤掉高于折叠频率以上的频率,然后再使用脉冲响应不变法转换为数字滤波器。当然这样会进一步增加设计复杂性和滤波器的阶数。2.用双线性变换法设计IIR数字滤波器脉冲响应不变法的主要缺点是产生频率响应的混叠失真。这是因为从S平面到Z平面是多值的映射关系所造成的。为了克服这一缺点,可以采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到-π/T~π/T之间,再用z=esT转换到Z平面上。也就是说,第一步先将整个S平面压缩映射到S1平面的-π/T~π/T一条横带里;第二步再通过标准变换关系z=es1T将此横带变换到整个Z平面上去。这样就使S平面与Z平面建立了一一对应的单值关系,消除了多值变换性,也就消除了频谱混叠现象,映射关系如图1-3所示。 图1-3双线性变换的映射关系为了将S平面的整个虚轴jΩ压缩到S1平面jΩ1轴上的-π/T到π/T段上,可以通过以下的正切变换实现(1-5)式中,T仍是采样间隔。当Ω1由-π/T经过0变化到π/T时,Ω由-∞经过0变化到+∞,也即映射了整个jΩ轴。将式(1-5)写成 将此关系解析延拓到整个S平面和S1平面,令jΩ=s,jΩ1=s1,则得 再将S1平面通过以下标准变换关系映射到Z平面z=es1T从而得到S平面和Z平面的单值映射关系为:(1-6) (1-7) 式(1-6)与式(1-7)是S平面与Z平面之间的单值映射关系,这种变换都是两个线性函数之比,因此称为双线性变换式(1-5)与式(1-6)的双线性变换符合映射变换应满足的两点要求。首先,把z=ejω,可得(1-8)即S平面的虚轴映射到Z平面的单位圆。其次,将s=σ+jΩ代入式(1-8),得 因此 由此看出,当σ<0时,|z|<1;当σ>0时,|z|>1。也就是说,S平面的左半平面映射到Z平面的单位圆内,S平面的右半平面映射到Z平面的单位圆外,S平面的虚轴映射到Z平面的单位圆上。因此,稳定的模拟滤波器经双线性变换后所得的数字滤波器也一定是稳定的。双线性变换法优缺点双线性变换法与脉冲响应不变法相比,其主要的优点是避免了频率响应的混叠现象。这是因为S平面与Z平面是单值的一一对应关系。S平面整个jΩ轴单值地对应于Z平面单位圆一周,即频率轴是单值变换关系。这个关系如式(1-8)所示,重写如下: 上式表明,S平面上Ω与Z平面的ω成非线性的正切关系,如图7-7所示。由图7-7看出,在零频率附近,模拟角频率Ω与数字频率ω之间的变换关系接近于线性关系;但当Ω进一步增加时,ω增长得越来越慢,最后当Ω→∞时,ω终止在折叠频率ω=π处,因而双线性变换就不会出现由于高频部分超过折叠频率而混淆到低频部分去的现象,从而消除了频率混叠现象。 图1-4双线性变换法的频率变换关系但是双线性变换的这个特点是靠频率的严重非线性关系而得到的,如式(1-8)及图1-4所示。由于这种频率之间的非线性变换关系,就产生了新的问题。首先,一个线性相位的模拟滤波器经双线性变换后得到非线性相位的数字滤波器,不再保持原有的线性相位了;其次,这种非线性关系要求模拟滤波器的幅频响应必须是分段常数型的,即某一频率段的幅频响应近似等于某一常数(这正是一般典型的低通、高通、带通、带阻型滤波器的响应特性),不然变换所产生的数字滤波器幅频响应相对于原模拟滤波器的幅频响应会有畸变,如图1-5所示。 图1-5双线性变换法幅度和相位特性的非线性映射对于分段常数的滤波器,双线性变换后,仍得到幅频特性为分段常数的滤波器,但是各个分段边缘的临界频率点产生了畸变,这种频率的畸变,可以通过频率的预畸来加以校正。也就是将临界模拟频率事先加以畸变,然后经变换后正好映射到所需要的数字频率上。三、IIR数字带通滤波器设计过程:根据以上IIR数字滤波器设计方法,下面运用双线性变换法基于MATLAB设计一个IIR带通滤波器,其中带通的中心频率为ωp0=π,;通带截止频率ωp1=π,ωp2=π;通带最大衰减αp=3dB;阻带最小衰减αs=15dB;阻带截止频率ωs2=π1.设计步骤:(1)根据任务,确定性能指标:在设计带通滤波器之前,首先根据工程实际的需要确定滤波器的技术指标:带通滤波器的阻带边界频率关于中心频率ωp0几何对称,因此ws1=wp0- (ws2-wp0)=π通带截止频率wc1=π,wc2=π;阻带截止频率wr1=π,wr2=π;阻带最小衰减αs=3dB和通带最大衰减αp=15dB;(2)用Ω=2/T*tan(w/2)对带通数字滤波器H(z)的数字边界频率预畸变,得到带通模拟滤波器H(s)的边界频率主要是通带截止频率ωp1,ωp2;阻带截止频率ωs1,ωs2的转换。为了计算简便,对双线性变换法一般T=2s通带截止频率wc1=(2/T)*tan(wp1/2)=tan(π/2)=(2/T)*tan(wp2/2)=tan(π/2)=阻带截止频率wr1=(2/T)*tan(ws1/2)=tan(π/2)=(2/T)*tan(ws2/2)=tan(π/2)=阻带最小衰减αs=3dB和通带最大衰减αp=15dB;(3)运用低通到带通频率变换公式λ=(((Ω^2)-(Ω0^2))/(B*Ω))将模拟带通滤波器指标转换为模拟低通滤波器指标。B=wc2-wc1=(((wr1^2)-(w0^2))/(B*wr1))=(((wr2^2)-(w0^2))/(B*wr2))=(((wc1^2)-(w0^2))/(B*wc1))=1normwc2=(((wc2^2)-(w0^2))/(B*wc2))=1得出,normwc=1,normwr=模拟低通滤波器指标:normwc=1,normwr=,αp=3dB,αs=15dB(4)设计模拟低通原型滤波器。用模拟低通滤波器设计方法得到模拟低通滤波器的传输函数Ha(s);借助巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev)滤波器、椭圆(Cauer)滤波器、贝塞尔(Bessel)滤波器等。(5)调用lp2bp函数将模拟低通滤波器转化为模拟带通滤波器。(6)利用双线性变换法将模拟带通滤波器Ha(s)转换成数字带通滤波器H(z).2.程序流程框图:开始↓读入数字滤波器技术指标↓将指标转换成归一化模拟低通滤波器的指标↓设计归一化的模拟低通滤波器阶数N和3db截止频率↓模拟域频率变换,将G(P)变换成模拟带通滤波器H(s)↓用双线性变换法将H(s)转换成数字带通滤波器H(z)↓输入信号后显示相关结果↓结束 程序:MATLAB 程序如下:clearwp0=*pi;wp1=*pi;wp2=*pi;Ap=3;ws2=*pi;As=15;T=2; %数字带通滤波器技术指标ws1=wp0-(ws2-wp0); %计算带通滤波器的阻带下截止频率wc1=(2/T)*tan(wp1/2);wc2=(2/T)*tan(wp2/2);wr1=(2/T)*tan(ws1/2);wr2=(2/T)*tan(ws2/2);w0=(2/T)*tan(wp0/2); %频率预畸变B=wc2-wc1; %带通滤波器的通带宽度 normwr1=(((wr1^2)-(w0^2))/(B*wr1));normwr2=(((wr2^2)-(w0^2))/(B*wr2));normwc1=(((wc1^2)-(w0^2))/(B*wc1));normwc2=(((wc2^2)-(w0^2))/(B*wc2)); %带通到低通的频率变换if abs(normwr1)>abs(normwr2) normwr=abs(normwr2)else normwr=abs(normwr1)end normwc=1; %将指标转换成归一化模拟低通滤波器的指标N=buttord(normwc,normwr,Ap,As,'s'); %设计归一化的模拟低通滤波器阶数N和3db截止频率[bLP,aLP]=butter(N,normwc,'s'); %计算相应的模拟滤波器系统函数G(p)[bBP,aBP]=lp2bp(bLP,aLP,w0,B); %模拟域频率变换,将G(P)变换成模拟带通滤波器H(s) [b,a]=bilinear(bBP,aBP,); %用双线性变换法将H(s)转换成数字带通滤波器H(z)w=linspace (0,2*pi,500);h=freqz(b,a,w);subplot(2,1,2);plot(w,abs(h));grid onxlabel('w(rad)')ylabel('|H(jw)|')title('频谱函数')subplot(2,2,1);plot(w,20*log10(abs(h)));axis([0,2*pi,-120,20]);grid onxlabel('w(rad)')ylabel('20*lg|H(jw)|(db)')title('20*lg|H(jw)|--w')