班级:姓名:学号:FIR数字滤波器设计实验报告一、实验目的1.掌握FIR数字滤波器的设计方法;2.熟悉MATLAB信号处理工具箱的使用;3.熟悉利用MATLAB软件进行FIR数字滤波器设计,以及对所设计的滤波器进行分析;4.了解FIR滤波器可实现严格线性相位的条件和特点;5.熟悉FIR数字滤波器窗函数设计法的MATLAB设计,并了解利用窗函数法设计FIR滤波器的优缺点;6.熟悉FIR数字滤波器频率采样设计法的MATLAB设计,并了解利用频率采样法设计FIR滤波器的优缺点;7.熟悉FIR数字滤波器切比雪夫逼近设计法的MATLAB设计,并了解利用切比雪夫逼近法设计FIR滤波器的优缺点。
二、实验设备及环境1.硬件:PC机一台;2.软件:MATLAB(6.0版以上)软件环境。
三、实验内容及要求1.实验内容:基于窗函数设计法、频率采样设计法和切比雪夫逼近设计法,利用MATLAB软件设计满足各自设计要求的FIR数字低通滤波器,并对采用不同设计法设计的低滤波器进行比较。
2.实验要求:(1)要求利用窗函数设计法和频率采样法分别设计FIR 数字低通滤波器,滤波器参数要求均为:0.3c w π=。
其中,窗函数设计法要求分别利用矩形窗、汉宁窗和布莱克曼窗来设计数字低通滤波器,且21N ≥,同时要求给出滤波器的幅频特性和对数幅频特性; 频率采样法要求分别利用采样点数21N =和63N =设计数字低通滤波器,同时要求给出滤波器采样前后的幅频特性,以及脉冲响应及对数幅频特性。
(2)要求利用窗函数设计法和切比雪夫逼近法分别设计FIR 数字低通滤波器,滤波器参数要求均为:0.2π,0.25dB,0.3π,50dB p p s s ωαωα====其中,窗函数设计法要求利用汉明窗来设计数字低通滤波器,且66N ≥,同时要求给出滤波器理想脉冲响应和实际脉冲响应,汉名窗和对数幅频特性; 切比雪夫逼近法要求采用切比雪夫Ⅰ型,同时要求给出滤波器的脉冲响应、幅频特性和误差特性。
(3)将要求(1)和(2)中设计的具有相同参数要求,但采用不同设计方法的滤波器进行比较,并以图的形式直观显示不同设计设计方法得到的数字低通滤波器的幅频特性的区别。
四、实验步骤1.熟悉MATLAB 运行环境,命令窗口、工作变量窗口、命令历史记录窗口,FIR 常用基本函数;2.熟悉MATLAB 文件格式,m 文件建立、编辑、调试;3.根据要求(1)的内容,设计FIR数字低通滤波器,建立M文件,编写、调试、运行程序;4.根据要求(2)的内容,设计FIR数字低通滤波器,建立M文件,编写、调试、运行程序;5.将要求(1)和(2)中设计的具有相同参数要求,但采用不同设计方法的滤波器进行比较分析;6.记录实验结果;7.分析实验结果;8.书写实验报告。
五、实验预习思考题1.FIR滤波器有几种常用设计方法?这些方法各有什么特点?2.FIR滤波器线性相位的条件和特点是什么?3. FIR数字滤波器窗函数设计法的流程是什么?具有什么样的优缺点?4.FIR数字滤波器频率采样设计法的流程是什么?具有什么样的优缺点?5.FIR数字滤波器切比雪夫逼近设计法的流程是什么?具有什么样的优缺点?6.利用MATLAB设计FIR数字滤波器以及进行分析时,都有哪些常用的基本函数?六、实验结果记录(一)满足实验要求(1)的数字低通滤波器设计实验记录1、利用窗函数法设计FIR低通滤波器得到的实验结果:滤波器的幅频特性和对数幅频特性如下:(N=21)0123400.20.40.60.811.21.401234-140-120-100-80-60-40-200202、利用频率采样法设计FIR 低通滤波器得到的实验结果:(1) 采样点数21N 时,通滤波器采样前后的幅频特性,以及脉冲响应及对数幅频特性如下:0.51H d (k)5101520脉冲响应h (n )0.510.51幅度响应H (w )0.51-60-40-200幅度响应w in pi20l o g H (w )(2) 采样点数63N 时,通滤波器采样前后的幅频特性,以及脉冲响应及对数幅频特性如下:0.51H d (k)204060脉冲响应h (n )0.510.51幅度响应H (w )0.51-60-40-200幅度响应w in pi20l o g H (w )(二)满足实验要求(2)的数字低通滤波器设计实验记录 1、利用窗函数法设计FIR 低通滤波器得到的实验结果:滤波器的理想脉冲响应和实际脉冲响应,汉名窗和对数幅频特性如下:204060理想脉冲响应h d (n )0204060汉明窗w (n )204060实际脉冲响应h (n )00.51幅度响应d B2、利用切比雪夫逼近法设计FIR 低通滤波器得到的实验结果: 滤波器的脉冲响应、幅频特性和误差特性如下:2040脉冲响应01234-100-50050对数幅频特性1234绝对幅频特性1234-0.02-0.0100.010.02误差特性七、实验分析针对上述实验结果,可以展开如下几个方面的实验分析:1.利用窗函数设计法设计FIR 数字低通滤波器,对于同样的设计指标,采用不同的窗函数,得到的数字低通滤波器的幅频特性有差异,根据实验发现:用矩形窗、汉宁窗和布莱克曼窗设计得到的数字低通滤波器中,汉宁窗和布莱克曼窗的幅度特性差别不大,而矩形窗的幅度特性在通带和阻带上相对于汉宁窗和布莱克曼窗存在着较大的纹波。
这个实验结果很好的验证了教材上关于不同窗函数所得滤波器的幅度特性差异的理论。
2. 利用频率采样法设计FIR 低通滤波器,对于同样的设计指标,采用不同的采样点数,得到的数字低通滤波器的幅频特性有差异,根据实验发现:N 较大的数字低通滤波器相对于N 较小的数字低通滤波器,具有更为密集的脉冲响应,同时幅频特性在通带和阻带内具有频率更大幅度相对较小的振荡纹波。
这个实验结果很好的验证了教材上关于不同采样点数得滤波器的脉冲响应和幅度特性差异的理论。
3. 利用切比雪夫逼近法(切比雪夫Ⅰ型)设计FIR低通滤波器,根据实验发现:利用切比雪夫Ⅰ型设计FIR低通滤波器得到的幅频特性通带具有较为明显的一致纹波,阻带纹波较小,因此其误差特性,在通带内具有较大的等纹波误差,阻带内具有较小的等纹波误差。
另外,对于同样的设计指标,采用窗函数设计法得到的数字低通滤波器相对于利用切比雪夫逼近法(切比雪夫Ⅰ型)设计FIR低通滤波器,在通带和阻带内均有较大的不等纹波。
八、实验体会通过本次实验主要有如下体会:1.掌握了FIR数字滤波器的设计方法;2.熟悉了MATLAB信号处理工具箱的使用;3.熟悉了利用MATLAB软件进行FIR数字滤波器设计,以及对所设计的滤波器进行分析;4.进一步熟悉了FIR数字滤波器窗函数设计法的MATLAB设计,并熟悉了利用窗函数法设计FIR滤波器的特点;5.进一步熟悉了FIR数字滤波器频率采样设计法的MATLAB设计,并熟悉了利用频率采样法设计FIR滤波器的特点;6.进一步熟悉了FIR数字滤波器切比雪夫逼近设计法的MATLAB设计,并了解了利用切比雪夫逼近法设计FIR滤波器的特点。
九、附录:设计的程序代码1.满足实验要求(1)的程序代码:(1)窗函数设计法之一的代码:WC=0.3*pi;N=21; %给出指标和长度Nhd=ideallp(WC,N); %求出给定指标下的理想脉冲响应Wd1=boxcar(N)';h1=hd.*Wd1; %用矩形窗设计Wd2=hamming(N)';h2=hd.*Wd2; %用汉明窗设计Wd3=blackman(N)';h3=hd.*Wd3; %用布莱克曼窗设计[H1,W]=freqz(h1,1); %求h1频率特性[H2,W]=freqz(h2,1); %求h2频率特性[H3,W]=freqz(h3,1); %求h3频率特性subplot(1,2,1);plot(W,abs(H1),W,abs(H2),':',W,abs(H3),'-.'); %画出幅频特性绝对值legend('Rectanle','Hamming','Blacman'); %标注subplot(1,2,2);plot(W,20*log10(abs(H1)),W,20*log10(abs(H2)),':',W,20*log10(abs(H3)),'-. '); %画对数特性legend('Rectanle','Hamming','Blacman'); %标注(2)频率采样法的代码:N =15;wc=0.3*pi; %给定指标N1=fix(wc/(2*pi/N));N2=N-2*N1-1; %N1为通带点数,N2为阻带长度HK = [ones(1,N1+1),zeros(1,N2),ones(1,N1)]; %理想幅度特性样本序列theta=-pi*[0:N-1]*(N-1)/N; %相位特性样本序列H=HK.*exp(j*theta); %频率特性样本序列h=real(ifft(H)); %求脉冲响应序列。
h应为实序列,故去掉虚部,减小误差[db,mag,pha,grd,w] = myfreqz(h,1);%求滤波器分贝幅频、绝对幅频、相频、群延时delta_w = 2*pi/1000; %1000等分2*piRp = -(min(db(1:wc/delta_w+1))) %求通带波动As = -(max(db((wc+1)/delta_w+1:501))) %求阻带衰减subplot(2,2,1);plot([0:2/N:(2/N)*(N-1) ],HK,'*');grid;%画理想低通样本序列axis([0,1,-0.1,1.1]);ylabel('Hd(k)')subplot(2,2,2);stem([0:N-1],h);title('脉冲响应'); %画所求滤波器脉冲响应axis([0 N -0.1 0.4]);ylabel('h(n)')subplot(2,2,3);plot(w/pi,mag); %画滤波器实际频率响应axis([0,1,-0.2,1.2]);title('幅度响应');ylabel('H(w)');grid;。