文档详情

用MATLAB设计FIR数字滤波器.实验八.doc

发布:2018-12-16约7.96千字共9页下载文档
文本预览下载声明
WORD 格式 整理 学习 参考 资料 分享 课程名称: 课程名称:数字信号处理 实验成绩: 指导教师: 实 验 报 告 院系: 信息工程学院 班级: 学号: 姓名: 日期: 2011. 11.26 实验八:用MATLAB设计FIR数字滤波器 1、 选择合适的窗函数设计FIR数字低通滤波器,要求: wp=0.2,Rp=0.05dB; ws=0.3,As=40dB。描绘该滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线。 程序清单如下: wp=0.2*pi;ws=0.3*pi;deltaw=ws-wp; N0=ceil(6.6*pi/deltaw); N=N0+mod(N0+1,2) %为实现FIR类型1偶对称滤波器,应确保N为奇数 windows=(hamming(N)); wc=(ws+wp)/2; 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=-round(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]);title(幅度频率响应); xlabel(频率(单位:\pi));ylabel(H(e^{j\omega})); set(gca,XTickMode,manual,XTick,[0,wp/pi,ws/pi,1]); set(gca,YTickMode,manual,YTick,[-50,-20,-3,0]);grid subplot(2,2,4);plot(w/pi,pha); axis([0,1,-4,4]);title(相位频率响应); xlabel(频率(单位:\pi));ylabel(\phi(\omega)); set(gca,XTickMode,manual,XTick,[0,wp/pi,ws/pi,1]); set(gca,YTickMode,manual,YTick,[-3.1416,0,3.1416,4]);grid 函数 ideal_lp 调用部分如下 function hd=ideal_lp(wc,N) %点0到N-1之间的理想脉冲响应 %wc=截止频率(弧度) %N=理想滤波器的长度 tao=(N-1)/2; n=[0:(N-1)]; m=n-tao+eps; %加一个小数以避免0作除数 hd=sin(wc*m)./(pi*m); 函数 freqz_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); 程序运行结果如下: N = 67 Rp = 0.0394 As = 52 2、 用凯塞窗设计一个FIR数字高通滤波器,要求: wp=0.3,Rp=0.1dB;ws=0.2,As=50dB。描绘该滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线。 程序清单如下: N=61;As=50; wp=0.3*pi;ws=0.2*pi; beta=0.112*(As-8.7) windows=kaiser(N,beta);
显示全部
相似文档