资源描述:
《实验11 用MATLAB设计FIR数字滤波器.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、课程名称:数字信号处理实验成绩:指导教师:实验报告院系:信息工程学院班级:电信二班学号:姓名:日期:实验11用MATLAB设计FIR数字滤波器一、实验目的:1、加深对窗函数法设计FIR数字滤波器的基本原理的理解。2、学习用MATLAB语言的窗函数法编写设计FIR数字滤波器的程序。3、了解MATLAB语言有关窗函数法设计FIR数字滤波器的常用函数用法。二、实验内容及步骤2、选择合适的窗函数设计FIR数字低通滤波器,要求:wp=0.2,Rp=0.05dB;ws=0.3,As=40dB。描绘该滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线。分
2、析:根据设计指标要求,并查表11-1,选择汉宁窗。程序清单如下:functionhd=ideal_lp(wc,N)wp=0.2*pi;ws=0.3*pi;deltaw=ws-wp;tao=(N-1)/2;n=[0:(N-1)];m=n-tao+eps;hd=sin(wc*m)./(pi*m);function[db,mag,pha,grd,w]=freqz_m(b,a);[H,w]=freqz(b,a,1000,'whole');H=(H(1:501))';w=(w(1:501))';mag=abs(H);db=20*log10((mag+eps)/
3、max(mag));pha=angle(H);grd=grpdelay(b,a,w);wp=0.2*pi;ws=0.3*pi;deltaw=ws-wp;第9页共9页wc=(ws+wp)/2;N0=ceil(6.6*pi/deltaw);N=N0+mod(N0+1,2)windows=(hanning(N))';hd=ideal_lp(wc,N);b=hd.*windows;[db,mag,pha,grd,w]=freqz_m(b,1);n=0:N-1;dw=2*pi/1000;Rp=-(min(db(1:wp/dw+1)))%检验通带波动As=-ro
4、und(max(db(ws/dw+1:501)))%检验最小阻带衰减subplot(2,2,1);stem(n,b);axis([0,N,1.1*min(b),1.1*max(b)]);title('实际脉冲响应');xlabel('n');ylabel('h(n)');subplot(2,2,2);stem(n,windows);axis([0,N,0,1.1]);title('窗函数特性');xlabel('n');ylabel('wd(n)');subplot(2,2,3);plot(w/pi,db);axis([0,1,-80,10]);ti
5、tle('幅度频率响应');xlabel('频率(单位:pi)');ylabel('H(e^{jomega})');set(gca,'XTickMode','manual','XTick',[0,wp/pi,ws/pi,1]);set(gca,'YTickMode','manual','YTick',[-50,-20,-3,0]);gridsubplot(2,2,4);plot(w/pi,pha);axis([0,1,-4,4]);title('相位频率响应');xlabel('频率(单位:pi)');ylabel('phi(omega)'
6、);set(gca,'XTickMode','manual','XTick',[0,wp/pi,ws/pi,1]);set(gca,'YTickMode','manual','YTick',[-3.1416,0,3.1416,4]);gridN=67Rp=0.0706As=44第9页共9页3、用凯塞窗设计一个FIR数字高通滤波器,要求:wp=0.3,Rp=0.1dB;ws=0.2,As=50dB。描绘该滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线。程序清单如下:functionhd=ideal_lp(wc,N)tao=(N-1)/2;
7、n=[0:(N-1)];m=n-tao+eps;hd=sin(wc*m)./(pi*m);function[db,mag,pha,grd,w]=freqz_m(b,a);[H,w]=freqz(b,a,1000,'whole');H=(H(1:501))';w=(w(1:501))';mag=abs(H);db=20*log10((mag+eps)/max(mag));pha=angle(H);grd=grpdelay(b,a,w);第9页共9页wp=0.3*pi;ws=0.2*pi;deltaw=wp-ws;N0=ceil(6.6*pi/delta
8、w);N=N0+mod(N0+1,2)windows=(kaiser(N,7.865))';wc=(ws+w