一、设计目的1. 掌握窗函数法设计FIR 滤波器的原理和方法,观察用几种常用窗函数设计的FIR 数字滤波器技术指标;2. 掌握FIR 滤波器的线性相位特性;3. 了解各种窗函数对滤波特性的影响。
二、设计原理如果所希望的滤波器的理想频率响应函数为H d (e jω),则其对应的单位脉冲响应为ωπωππωd e e H n h n j j d ⎰-=)(21)(,用窗函数w N (n)将h d (n)截断,并进行加权处理,得到实际滤波器的单位脉冲响应h (n )=h d (n )w N (n ),其频率响应函数为n j N n j e n h e H ωω--=∑=10)()(。
如果要求线性相位特性,则h (n )还必须满足)1()(n N h n h --±=。
可根据具体情况选择h(n)的长度及对称性。
可以调用MATLAB 工具箱函数fir1实现本实验所要求的线性相位FIR-DF 的设计,调用一维快速傅立叶变换函数fft 来计算滤波器的频率响应函数。
fir1是用窗函数法设计线性相位FIRDF 的工具箱函数,调用格式如下:hn=fir1(N, wc, ‘ftype’, window) fir1实现线性相位FIR 滤波器的标准窗函数法设计。
hn=fir1(N,wc)可得到6 dB 截止频率为wc 的N 阶(单位脉冲响应h(n)长度为N+1)FIR 低通滤波器,默认(缺省参数windows)选用hammiing 窗。
其单位脉冲响应h(n)满足线性相位条件:h(n)=h(N-1-n)其中wc 为对π归一化的数字频率,0≤wc ≤1。
当wc=[wc1, wc2]时,得到的是带通滤波器。
hn=fir1(N,wc,’ftype’)可设计高通和带阻滤波器。
当ftype=high 时,设计高通FIR 滤波器;当ftype=stop 时,设计带阻FIR 滤波器。
应当注意,在设计高通和带阻滤波器时,阶数N 只能取偶数(h(n)长度N+1为奇数)。
不过,当用户将N 设置为奇数时,fir1会自动对N 加1。
hn=fir1(N,wc,window)可以指定窗函数向量window 。
如果缺省window 参数,则fir1默认为hamming 窗。
可用的其他窗函数有Boxcar, Hanning, Bartlett,Blackman, Kaiser 和Chebwin 窗。
例如:hn=fir1(N,wc,bartlett(N+1))使用Bartlett 窗设计;hn=fir1(N,wc,chebwin(N+1,R))使用Chebyshev 窗设计。
hn=fir1(N,wc,’ftype’,window)通过选择wc 、 ftype 和window 参数(含义同上),可以设计各种加窗滤波器。
三、 详细设计步骤1、用窗函数法设计一个线性相位FIR 低通数字滤波器FIR 低通数字滤波器指标为:)阻带衰减()通带衰减(度)数字阻带截止频率(弧度)数字通带截止频率(弧dB dB s A dB dBp R s p 5014.02.0====πωπω因为衰减为50dB ,所以选择海明窗。
过渡带宽为Ws -Wp=0.2π,由公式N >6.6π÷0.2π=33,所以N=34。
所以程序如下:N=34;Wc=pi/5; %通带截止频率wc=Wc/pi;%频率归一化h=fir1(N,wc);[H,m]=freqz(h,[1],1024,'whole'); %频率响应mag=abs(H);db=20*log10((mag+eps)/max(mag));pha=angle(H);subplot(2,2,1)n=0:N;stem(n,h,'.')axis([0 N -0.1 0.3])hold onn=0:N;x=zeros(N+1);plot(n,x,'-')hold offxlabel('n')ylabel('h(n)')title('实际低通滤波器的h(n)')subplot(2,2,2)plot(m/pi,db)axis([0 1 -100 0])xlabel('w/pi')ylabel('dB')title('副频衰减特性')grid onsubplot(2,2,3)plot(m,pha)hold onn=0:7;x=zeros(8);plot(n,x,'-')hold offaxis([0 3.15 -4 4])xlabel('频率(rad)')ylabel('相位(rad)')title('相频特性')subplot(2,2,4)plot(m,mag)axis([0 6.15 0 1.5])xlabel('频率W(rad)')ylabel('幅值')title('幅频特性')2、用窗函数法设计一个线性相位FIR 高通数字滤波器。
要求:FIR 高通数字滤波器指标为:)阻带衰减()通带衰减(度)数字阻带截止频率(弧度)数字通带截止频率(弧dB dB s A dB dBp R s p 4013.05.0====πωπω 因为衰减为40dB ,所以选择汉宁窗。
过渡带宽为Wp -Ws=0.2π,由公式N >6.2π÷0.2π=31,所以N=32。
程序如下:N=32;Wc=pi/2;wc=Wc/pi;%频率归一化h=fir1(N,wc, 'high', Hanning(N+1));[H,m]=freqz(h,[1],1024,'whole'); %频率响应mag=abs(H);db=20*log10((mag+eps)/max(mag));pha=angle(H);subplot(2,2,1)n=0:N;stem(n,h,'.')axis([0 N -0.1 0.3])hold onn=0:N-1;x=zeros(N);plot(n,x,'-')hold offxlabel('n')ylabel('h(n)')title('实际低通滤波器的h(n)')subplot(2,2,2)plot(m/pi,db)axis([0 1 -100 0])xlabel('w/pi')ylabel('dB')title('副频衰减特性')grid onsubplot(2,2,3)plot(m,pha)hold onn=0:7;x=zeros(8);plot(n,x,'-')hold offaxis([0 3.15 -4 4])xlabel('频率(rad)')ylabel('相位(rad)')title('相频特性')subplot(2,2,4)plot(m,mag)axis([0 6.15 0 1.5])xlabel('频率W(rad)')ylabel('幅值')title('幅频特性')四、体会通过这次课程设计,通过不断的查资料,思考等培养了我综合运用所学知识,发现、提出、分析和解决实际问题、锻炼实践的能力。
在这次课程设计中,我懂得了如何设计窗函数,如何用窗函数法设计FIR滤波器的原理和方法。
在做设计的过程中难免总会出现各种问题,通过查阅资料,自学其中的相关知识,无形间提高了我们的动手,动脑能力,通过课程设计让我知道了,知识只有学以致用才能发挥它的价值,只有真正去做了,你才能真正懂得它的原理。
五、参考文献[1]数字信号处理教程(第三版)程佩青清华大学出版社[2]MATLAB基础与编程入门(第二版)张威编西安电子科技大学出版社线性相位FIR低通数字滤波器程序如下:N=34;Wc=pi/5; %通带截止频率wc=Wc/pi;%频率归一化h=fir1(N,wc);[H,m]=freqz(h,[1],1024,'whole'); %频率响应mag=abs(H);db=20*log10((mag+eps)/max(mag));pha=angle(H);subplot(2,2,1)n=0:N;stem(n,h,'.')axis([0 N -0.1 0.3])hold onn=0:N;x=zeros(N+1);plot(n,x,'-')hold offxlabel('n')ylabel('h(n)')title('实际低通滤波器的h(n)')subplot(2,2,2)plot(m/pi,db)axis([0 1 -100 0])xlabel('w/pi')ylabel('dB')title('副频衰减特性')grid onsubplot(2,2,3)plot(m,pha)hold onn=0:7;x=zeros(8);plot(n,x,'-')hold offaxis([0 3.15 -4 4])xlabel('频率(rad)')ylabel('相位(rad)')title('相频特性')subplot(2,2,4)plot(m,mag)axis([0 6.15 0 1.5])xlabel('频率W(rad)')ylabel('幅值')title('幅频特性')线性相位FIR高通数字滤波器N=32;Wc=pi/2;wc=Wc/pi;%频率归一化h=fir1(N,wc, 'high',Hanning(N+1));[H,m]=freqz(h,[1],1024,'whole'); %频率响应mag=abs(H);db=20*log10((mag+eps)/max(mag));pha=angle(H);subplot(2,2,1)n=0:N;stem(n,h,'.')axis([0 N -0.1 0.3])hold on实用文档n=0:N-1;x=zeros(N);plot(n,x,'-')hold offxlabel('n')ylabel('h(n)')title('实际低通滤波器的h(n)')subplot(2,2,2)plot(m/pi,db)axis([0 1 -100 0])xlabel('w/pi')ylabel('dB')title('副频衰减特性')grid onsubplot(2,2,3)plot(m,pha)hold onn=0:7;x=zeros(8);plot(n,x,'-')hold offaxis([0 3.15 -4 4])xlabel('频率(rad)')ylabel('相位(rad)')title('相频特性')subplot(2,2,4)plot(m,mag)axis([0 6.15 0 1.5])xlabel('频率W(rad)')ylabel('幅值')title('幅频特性')标准。