数字信号处理实验用窗函数法设计FIR滤波器.doc

上传人:doc321 文档编号:14964942 上传时间:2022-02-26 格式:DOC 页数:11 大小:92.50KB
返回 下载 相关 举报
数字信号处理实验用窗函数法设计FIR滤波器.doc_第1页
第1页 / 共11页
数字信号处理实验用窗函数法设计FIR滤波器.doc_第2页
第2页 / 共11页
数字信号处理实验用窗函数法设计FIR滤波器.doc_第3页
第3页 / 共11页
数字信号处理实验用窗函数法设计FIR滤波器.doc_第4页
第4页 / 共11页
数字信号处理实验用窗函数法设计FIR滤波器.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《数字信号处理实验用窗函数法设计FIR滤波器.doc》由会员分享,可在线阅读,更多相关《数字信号处理实验用窗函数法设计FIR滤波器.doc(11页珍藏版)》请在三一文库上搜索。

1、实验四 用窗函数法设计FIR数字滤波器%实验四:用窗函数法设计FIR数字滤波器clear allclose allN=input(输入窗函数长度N=?(输入0=退出); %注意加分号与不加分号的区别while(N=0) wc=input(输入希望逼近的理想低通滤波器的截止频率Wc=?); %注意截止频率pi/4的输入,matlab中已经默认定义了pi n=0:(N-1); alpha=(N-1)/2; m=n-alpha+eps; hd=sin(wc*m)./(pi*m); %得到理想低通滤波器(教材P333式7-41) k=input(请选择窗函数类型(1=矩形;2=汉宁;3=海明;4=布莱

2、克曼):); if k=1 B=boxcar(N); %产生矩形窗 string=Boxcar, N=,num2str(N); %text函数使用字符串string在图中标明所用窗的类型及长度 elseif k=2 %注意elseif与else if的区别, 有几个独立的if就要求有几个end B=hamming(N); string=Hamming, N=,num2str(N); elseif k=3 B=hanning(N); string=Hanning, N=,num2str(N); else B=blackman(N) string=Blackman, N=,num2str(N);

3、end h=hd.*(B); %得到FIR数字滤波器h(n)=hd(n)w(n), 注意*是矩阵相乘,.*是矩阵的对应元素相乘 H,w=freqz(h,1,1024); %求滤波器h(n)的频率响应;对FIR而言, H(z)分子分母多项式的系数向量b=1, a=h;返回向量H的点数N =1024 db=20*log10(abs(H)+eps); %得到幅值 pha=angle(H); %得到相位 %绘制单位脉冲响应h(n)、幅频衰减特性20lgH(ejw)、相频特性和幅频特性H(ejw)的波形 figure; %加figure语句,下一个plot所绘出的图不会把上次的图给取代。也可在每次运行完

4、plot之后,加figure语句 subplot(2,2,1) stem(n,h,.r); %绘制单位脉冲响应h(n)波形 axis(0,N-1,-0.1,0.3); xlabel(n); ylabel(h(n); title(实际低通滤波器的h(n); text(0.28*N),0.275,string); %创建text图形句柄对象函数,text(x,y,string)在图形中指定的位置上(x,y)上显示字符串string subplot(2,2,2) plot(w/pi,db,m); %绘制幅频衰减特性20lgH(ejw)波形 axis(0,1,-100,0);2 / 11 xlabel

5、(w/pi); ylabel(dB); title(衰减特性(dB); grid; %添加网格线 set(gca,xtick, 0:0.2:1,ytick,-100:20:0) %设置网格线的密度 subplot(2,2,3) plot(w,pha); %绘制相频特性波形 hold on; plot(0:4,zeros(5),-k); %绘制零相位基线 title(相频特性); xlabel(频率W(rad); ylabel(相位(rad); axis(0,3.15,-4,4); subplot(2,2,4); plot(w,abs(H); %绘制幅频特性H(ejw)波形 title(频率特性

6、); xlabel(频率W(rad); ylabel(幅值); axis(0,3.15,0,1.5); text(0.9,1.3,string); N=input(输入窗函数长度N=? (输入0=退出);end plot(x,y)以x元素为横坐标值,y元素为纵坐标值绘制曲线。(1) x, y都是向量,则以x中元素为横坐标,y中元素为纵坐标作平面曲线。此时x, y必须具有相同长度。(2) x, y都是矩阵,则将x的列和y中相应的列相组合,绘制多条平面曲线。此时x, y必须具有相同的大小。(3) x是向量, y是矩阵,若x的长度与y的行数相等,则将x与y中的各列相对应,绘制多条平面曲线;否则,若x

7、的长度与y的列数相等,则将x与y中的各行相对应,绘制多条平面曲线。此时x的长度必须等于y的行数或列数。%实验四:用窗函数法设计FIR数字滤波器% MATLAB主程序clear all;close all;b=1;i=0;while(b); temp=menu(选择窗函数长度N,N=10,N=15,N=20,N=25,N=30,N=33,N=35,N=40,N=45,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

8、/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=1 B=boxcar(N); string=Boxcar,N=,num2str(N); else if k=2 B=hamming(N); string=

9、Hamming,N=,num2str(N); else if k=3 B=hanning(N); string=Hanning,N=,num2str(N); else if k=4 B=blackman(N); string=Blackman,N=,num2str(N); end end end end h=hd.*(B); %得到FIR数字滤波器 H,m=freqz(h,1,1024,whole); %求其频率响应。whole表示在0,2之间选取n个频率点。 mag=abs(H); %得到幅值 db=20*log10(mag+eps)/max(mag); pha=angle(H); %得到相

10、位 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; s

11、ubplot(2,2,3); plot(m,pha); hold on; n=0:7; x=zeros(8); plot(n,x,-); title(相频特性); xlabel(频率W(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=2 b=0; endendtemp=menu(Close All Figure ?,Yes,No);if temp=1 close allend %实验中的子函数:产生理想低通滤波器单位脉冲响应hd(n)function hd=ideal(w,N);alpha=(N-1)/2;n=0:(N-1);m=n-alpha+eps;hd=sin(w*m)./(pi*m); 友情提示:方案范本是经验性极强的领域,本范文无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1