当前位置:文档之家› 数字信号处理滤波器

数字信号处理滤波器

1.设计物理可实现的低通滤波器设计思路:因为要设计FIR有限脉冲响应滤波器,通常的理想滤波器的单位脉冲响应h是无限长的,所以需要通过窗来截断它,从而变成可实现的低通滤波器。

程序如下:clc;clear all;omga_d=pi/5;omga=0:pi/30:pi;for N=3:4:51;w1= window(@blackman,N);w2 = window(@hamming,N);w3= window(@kaiser,N,2.5);w4= window(@hann,N);w5 = window(@rectwin,N);M=floor(N/2);subplot(311);plot(-M:M,[w1,w2,w3,w4,w5]); axis([-M M 0 1]); legend('Blackman','Hamming','kaiser','hann','rectwin');n=1:M;hd=sin(n*omga_d)./(n*omga_d)*omga_d/pi;hd=[fliplr(hd),1/omga_d,hd];h_d1=hd.*w1';h_d2=hd.*w2';h_d3=hd.*w3';h_d4=hd.*w4';h_d5=hd.*w5';m=1:M;H_d1=2*cos(omga'*m)*h_d1(M+2:N)'+h_d1(M+1);H_d2=2*cos(omga'*m)*h_d2(M+2:N)'+h_d2(M+1);H_d3=2*cos(omga'*m)*h_d3(M+2:N)'+h_d3(M+1);H_d4=2*cos(omga'*m)*h_d4(M+2:N)'+h_d4(M+1);H_d5=2*cos(omga'*m)*h_d5(M+2:N)'+h_d5(M+1);subplot(312);plot(omga,[H_d1,H_d2,H_d3,H_d4,H_d5]);legend('Blackman','Hamming','kaiser','hann','rectwin');subplot(313);plot(abs([fft(h_d1);fft(h_d2);fft(h_d3);fft(h_d4);fft(h_ d5)])');pause();end程序分析:整个对称窗的长度为N,然而为了在MATLAB中看到窗函数在负值时的形状需将N变为它的一半,即为2M+1个长度。

窗长设置为从3开始以4为间隔一直跳动51。

则长度相同的不同窗函数在时域[-M,M]的形状如第一个图所示。

对窗函数进行傅里叶变换时,将零点跳过去先构造一个一半的理想滤波器的脉冲响应hd,再将零点位置求导得出的数赋值进去。

将生成的hd左右颠倒形成了一个理想的滤波器的脉冲响应。

将构造的理想滤波器的脉冲响应依次与之前定义的窗函数相乘,相乘出来的为列向量,用转置将其变成行向量,形成的h_d就是非理想的低通滤波器的脉冲响应序列。

因为h_d为对称奇数长度序列,它的DTFT 可以是二倍的离散余弦变化,而零点的位置则直接带入求出,两者相加则是H_d。

则第二个图表示的是五个矩阵向量在频域的变化,而第三个图表示的是五个非理想低通滤波器的傅里叶变换,图三FFT给出的结果永远是对称的,因为它显示了DFT的周期性。

2、利用脉冲响应不变法设计一巴特沃斯低通数字滤波器,通带截止频率p ω=2.0π,阻带下限频率s ω= 4.0π,通带最大衰减p δ为3dB ,阻带最小衰减s δ为20dB ,给定Ts =0.001s 。

程序如下:Ts=0.001;Ap=3;As=20;OmegaP=0.2*pi/Ts;OmegaS=0.4*pi/Ts;%模拟通带、阻带截止频率[n,Wn]=buttord(OmegaP,OmegaS,Ap,As,'s');%确定最小阶数n 和反归一化截止频率Wn[b,a]=butter(n,Wn,'s');%b 、a 分别为模拟滤波器的分子、分母按降幂排列的多项式系数[bz,az]=impinvar(b,a,1/Ts);%脉冲响应不变法得到数字滤波器的分子分母系数 omega=[0:0.01:pi];%确定坐标轴范围h=freqz(bz,az,omega);%得到模拟滤波器的单位冲激响应系数Ampli=20*log10(abs(h)/abs(h(1)));%求衰减的分贝subplot(2,1,1);plot(omega/pi,Ampli,'k');%显示滤波器的幅度响应xlabel('数字频率/\pi');ylabel('幅度/dB');grid;subplot(2,1,2);theta=phasez(bz,az,omega);%滤波器的相位响应及坐标值plot(omega/pi,theta*360/(2*pi),'k');%显示滤波器的相位响应xlabel('数字频率/\pi');ylabel('相位/度');grid;程序所得图像如下:3、利用双线性变换法设计一巴特沃斯低通数字滤波器,通带截止频率p ω=2.0π,阻带下限频率s ω= 4.0π,通带最大衰减p δ为3dB ,阻带最小衰减s δ为20dB ,给定Ts =0.001s 。

程序如下:Ap=3;As=20;OmegaP=0.2*pi;%数字通带截止频率OmegaS=0.4*pi;%数字阻带截止频率[n,Wn]=buttord(OmegaP/pi,OmegaS/pi,Ap,As);%确定最小阶数n 和反归一化截止频率Wn[bz,az]=butter(n,Wn);%bz 、az 分别为数字滤波器的分子、分母按降幂排列的多项式系数 omega=[0:0.01:pi];%确定坐标轴范围h=freqz(bz,az,omega);%得到滤波器的单位冲激响应系数Ampli=20*log10(abs(h));%求衰减的分贝subplot(2,1,1);plot(omega/pi,Ampli,'k');%显示滤波器的幅度响应xlabel('数字频率/\pi');ylabel('幅度/dB');grid;subplot(2,1,2);theta=phasez(bz,az,omega);%滤波器的相位响应及坐标值plot(omega/pi,theta*360/(2*pi),'k');%显示滤波器的相位响应xlabel('数字频率/\pi');ylabel('相位/度');grid;程序所得图像:4、比较脉冲响应不变法与双线性变换法的区别:将两种方法的幅度响应做比较:clc;clear all;Fs=4;w=0:pi;[a,b]=butter(1,3.*pi/8,'s');%产生低通滤波器;[a1,b1]=bilinear(a,b,Fs);[a2,b2]=impinvar(a,b,Fs);[H1,w]=freqz(a1,b1);[H2,w]=freqz(a2,b2);plot(w,abs(H1),w,abs(H2),'r');xlable('\omega(\pi)');ylable('|H(e^j\omega)|');分析所得图形及数据可知,脉冲响应不变法的优点是频率坐标变换是线性的,如不考虑频率混叠现象,用这种方法设计数字滤波器会很好的重现原模拟滤波器的频率响应。

另外一个优点是数字滤波器的单位脉冲响应完全模仿模拟滤波器的单位冲激响应,时域逼近好。

但其也具有很大的缺点,若抽样频率不高或其它原因将产生混叠失真,不能重现原模拟滤波器频率响应。

脉冲响应不变方法设计滤波器在通频带的增益要小但是其阻带频率较高衰减幅度大,滤波性相对较好;双线性变换法在通频带其增益较高但阻带频率高,在实际的应用中可能不能很好地实现滤除噪声的功能。

所以,脉冲响应不变法适合低通、带通滤波器设计,不适合高通、带阻滤波器的设计。

脉冲响应不变法一个重要的特点是频率坐标的变换是线性的(ω=ΩT),其缺点是有频谱的周期延拓效应,存在频谱混淆现象。

为了克服脉冲响应不变法可能产生的频谱混淆,提出了双线性变换法,它依靠双线性变换式:s=1-1-z/1+ 1-z, z=1+s/1-s 其中s=σ+jΩ,z=rωj-e,建立起s平面和z平面的单值映射关系,数字频域和模拟频域之间的关系:Ω=tan(ω/2) ,模拟到数字的转换 wp=2πfpT,ws=2πfsT双线性变换法和脉冲响应不变法相比,主要优点是s平面与z平面之间是单一的一一对应关系,从根本上消除了频谱混叠现象。

同时由s域变换到z域时,双线性变换法不需要将模拟滤波器的传递函数进行分解,只需将传递函数中Ha(s)的拉普拉斯算子s用z的函数来代替即可,因此应用应用十分方便简单。

但其缺点是模拟频率Ω与数字频率ω之间是非线性关系,这使得幅频特性和相频特性发生畸变.脉冲响应不变法具有时域模仿特性好的特点,当要求数字滤波器在时域上能模仿模拟滤波器的功能时,采用这种方法。

5、用频率采样法设计FIR滤波器频率采样法的基本思想是使所设计的FIR数字滤波器的频率特性在某些离散频率点上的值准确的等于所需滤波器在这些频率点处的值,在其他频率处的特性则有较好的逼近。

在实际中为了设计的FIR滤波器具有线性相位,单位采样响应函数h(n)是实序列且满足h(n)= (h-1-n),由此得到的幅频和相频特性就是采样值H(k)需要满足的约束条件。

而根据频域的采样定理以及FIR数字滤波器的频率特性可知,在每个采样点上,频率响应与理想特性H(k)严格一致,在采样点之间,频率响应由各采样点的内插函数延伸叠加而形成,一次得到的滤波器有一定的逼近误差码,而误差的大小则与理想频率响应的曲线形状有关。

理想特性如果平滑,则误差较小;反之则误差较大,并且在理想频率响应的不连续点会产生波纹。

clc;clear all;fs=3000;fp=3050;Fs=8000;delta_p=0.1;delta_s=0.1;omga_p=2*pi*fp/Fs;%将数字滤波器的参数和模拟滤波器联系起来omga_s=2*pi*fs/Fs;K=512;M=16;C=floor((omga_p+omga_s)/2/pi*K);Mag=[ones(1,C),zeros(1,K-C)];Phi=linspace(0,pi,K)*M/2;H=Mag.*exp(-1j*Phi);H=[H,conj(fliplr(H(1:K-1)))];h0=fftshift(real(ifft(H)));h=h0(K+M/2-M:K+M/2+M);plot(h);figure;stem(abs(fft(h)));6、比较两种设计FIR数字滤波器的方法频率采样法:可以在频域直接设计,而且适合于最优化设计。

相关主题