实验四 用窗函数法设计FIR 数字滤波器实验项目名称:用窗函数法设计FIR 数字滤波器 实验项目性质:验证性实验 所属课程名称:数字信号处理 实验计划学时:2 一. 实验目的(1)掌握用窗函数法设计FIR 数字滤波器的原理与方法。
(2)熟悉线性相位FIR 数字滤波器的特性。
(3)了解各种窗函数对滤波特性的影响。
二. 实验容和要求(1) 复习用窗函数法设计FIR 数字滤波器一节容,阅读本实验原理,掌握设计步骤。
(2) 用升余弦窗设计一线性相位低通FIR 数字滤波器,截止频率rad c 4πω=。
窗口长度N=15,33。
要求在两种窗口长度情况下,分别求出()n h ,打印出相应的幅频特性和相频特性曲线,观察3dB 带宽和20dB 带宽。
总结窗口长度N 对滤波器特性的影响。
设计低通FIR 数字滤波器时,一般以理想低通滤波特性为逼近函数()ωj e H ,即()⎪⎩⎪⎨⎧≤<≤=-πωωωωωαωc c j jd ,,ee H 0其中21-=N α ()()()[]()a n a n d e e d e e H n h c j j j j d d cc--===⎰⎰---πωωπωπωαωωωαωππωsin 2121(3) 33=N ,4πω=c ,用四种窗函数设计线性相位低通滤波器,绘制相应的幅频特性曲线,观察3dB 带宽和20dB 带宽以及阻带最小衰减,比较四种窗函数对滤波器特性的影响。
三. 实验主要仪器设备和材料 计算机,MATLAB6.5或以上版本 四. 实验方法、步骤及结果测试如果所希望的滤波器的理想的频率响应函数为()ωj d e H ,则其对应的单位脉冲响应为()()ωπωωππd e e H n h jjdd ⎰-=21(4.1) 窗函数设计法的基本原理是用有限长单位脉冲响应序列()n h 逼近()n h d 。
由于()n h d 往往是无限长序列,而且是非因果的,所以用窗函数()n ω将()n h d 截断,并进行加权处理,得到:()()()n n h n h d ω=(4.2)()n h 就作为实际设计的FIR 数字滤波器的单位脉冲响应序列,其频率响应函数()ωj e H 为()()nj N n j en h eH ωω∑-==1(4.3)式中,N 为所选窗函数()n ω的长度。
我们知道,用窗函数法设计的滤波器性能取决于窗函数()n ω的类型及窗口长度N 的取值。
设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N 。
各种类型的窗函数可达到的阻带最小衰减和过渡带宽度见表4.1。
表4.1 各种窗函数的基本参数()()()n n h n h d ω•=,并按照式(4.3)求出()ωj e H 。
()ωj e H 是否满足要求,要进行演算。
一般在()n h 尾部加零使长度满足2的整数次幂,以便用FFT 计算()ωj e H 。
如果要观察细节,补零点数增多即可。
如果()ωj e H 不满足要求,则要重新选择窗函数类型和长度N ,再次验算,直至满足要求。
如果要求线性相位特性,则()n h 还必须满足()()n N h n h --±=1根据上式中的正、负号和长度N 的奇偶性又将线性相位FIR 滤波器分成四类。
要根据所设计的滤波特性正确选择其中一类,例如,要设计线性相位低通特性,可以选择()()n N h n h --=1这一类,而不能选择()()n N h n h ---=1这一类。
主程序框图如图4.1所示。
其中幅度特性要求用dB 表示。
设)()()()()()()]([)(22k H k H k H k jH k H k H n h DFT k H I R I R +=+==画图时,用)(lg 20k H 打印幅度特性。
第k 点对应的频率k Nk πω2=。
为使曲线包络更接近()ωj e H 的幅度特性曲线,DFT 变换区间要选大些。
例如窗口长度N=33时,可通过在()n h 末尾补零的方法,使长度变为64,再进行64点DFT ,则可以得到更精确的幅度衰减特性曲线。
图4-1 主程序框图下面给出MATLAB主程序:%实验四,用窗函数法设计FIR数字滤波器b=1;close all;i=0;while(b);temp=menu('选择窗函数长度N','N=10','N=15','N=20','N=25','N=30','N=33','N=35','N=40','N=4 5','N=50','N=55','N=60','N=64');menu1=[10,15,20,25,30,33,35,40,45,50,55,60,64];N=menu1(temp);temp=menu('选择逼近理想低通滤波器截止频率Wc','Wc=pi/4','Wc=pi/2','Wc=3*pi/4','Wc=pi','Wc=0.5','Wc=1.0',' Wc=1.5','Wc=2.0','Wc=2.5','Wc=3.0');menu2=[pi/4,pi/2,3*pi/4,pi,0.5,1,1.5,2,2.5,3];w=menu2(temp);n=[0:(N-1)];hd=ideal(w,N); %得到理想低通滤波器k=menu('请选择窗口类型:','boxcar','hamming','hanning','blackman');if k==1B=boxcar(N);string=['Boxcar','N=',num2str(N)];else if k==2B=hamming(N);string=['Hamming','N=',num2str(N)];else if k==3B=hanning(N);string=['Hanning','N=',num2str(N)];else if k==4B=blackman(N);string=['Blackman','N=',num2str(N)]; endendendendh=hd.*(B)'; %得到FIR数字滤波器[H,m]=freqz(h,[1],1024,'whole'); %求其频率响应mag=abs(H); %得到幅值db=20*log10((mag+eps)/max(mag));pha=angle(H); %得到相位i=i+1;figure(i)subplot(2,2,1);n=0:N-1;stem(n,h,'.');axis([0,N-1,-0.1,0.3]);hold on;n=0:N-1;x=zeros(N);plot(n,x,'-');xlabel('n');ylabel('h(n)');title('实际低通滤波器的h(n)');text((0.3*N),0.27,string);hold off;subplot(2,2,2);plot(m/pi,db);axis([0,1,-100,0]);xlabel('w/pi');ylabel('dB');title('衰减特性(dB)');grid;subplot(2,2,3);plot(m,pha);hold on;n=0:7;x=zeros(8);plot(n,x,'-');title('相频特性');xlabel('频率(rad)');ylabel('相位(rad)');axis([0,3.15,-4,4]);subplot(2,2,4);plot(m,mag);title('频率特性');xlabel('频率W(rad)');ylabel('幅值');axis([0,3.15,0,1.5]);text(0.9,1.2,string);b=menu('Do You want To Continue ?','Yes','No'); if b==2b=0;endendtemp=menu('Close All Figure ?','Yes','No');if temp==1close allend程序运行结果:运行程序,根据实验容要求和程序提示选择你要进行的实验参数。
三个实验参数选定后,程序运行输出用所选窗函数设计的实际FIR低通数字滤波器的单位脉冲响应h(n)、幅频衰减特性(20lg|H(e jw)|)、相频特性及幅频特性|H(e jw)|的波形,h(n)和|H(e jw)|图中标出了所选窗函数类型及其长度N值。
对四种窗函数(N=15和N=33)的程序运行结果如图4-2到图4-9所示,由图可以看出用各种窗函数设计的FIR滤波器的阻带最小衰减及过渡带均与教材中一致。
在通带均为严格相位特性。
图4-2 矩形窗(N=15)图4-3 矩形窗(N=33)图4-4 哈明窗(N=15)图4-5 哈明窗(N=33)图4-6 汉宁窗(N=15)图4-7 汉宁窗(N=33)图4-8 布莱克曼窗(N=15)五. 实验报告要求(1) 简述实验原理及目的。
(2) 按照实验步骤以及要求,比较各种情况下的滤波性能,说明窗口长度N 和窗函数类型对滤波特性的影响。
(3) 总结用窗函数法设计FIR 滤波器的主要特点。
(4) 简要回答思考题。
思考题如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器,写出设计步骤。
如果要求用窗函数法设计带通滤波器,而且给定上、下边带截止频率为1ω和2ω,试求理想带通的单位脉冲响应()n h d 。
图4-9 布莱克曼窗(N=33)。