您好,欢迎访问三七文档
1数字滤波器的概述1.1FIR数字滤波器设计原理[1]中介绍了数字滤波器冲激响应的时域特征,可将数字滤波器分为2种,即无限长冲激响应滤波器(IIR)和有限长冲激响应滤波器(FIR)。FIR具有突出的优点:系统总是稳定的、易于实现线性相位、允许设计多通带(或多阻带)滤波器。但与IIR相比,在满足同样的阻带衰减的情况下需要较高的阶数。FIR的冲激响应h(k)是有限长的M阶FIR系统函数可表示为kMkzkhz)()(H0滤波器的输出:)()()()()(0ikxihkxkhkyMi它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题中给出的设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。在这里我们利用窗函数法设计FIR滤波器。给定所要求的滤波器的频率响应Hd(ejw),要求设计一个FIR滤波器的频率响应H(ejw)来逼近Hd(ejw).设计是在时域进行的,首先由傅立叶变换导出无限长的序列hd(n),然后用窗函数截断hd(n),即:h(n)=hd(n)w(n)。1.2FIR数字滤波器的特性FIR滤波器有以下特点:(1)系统的单位冲激响应h(n)在有限个n值处不为零;(2)系统函数H(z)在|z|0处收敛,极点全部在z=0处(因果系统);(3)结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。因为FIR数字滤波器的单位冲激响应是有限长的,所以它永远都是稳定的。[3]说明了达到具有线性相位这一要求,仅需要对FIR数字滤波器的冲激响应()hn施加一定的约束。令jwez,就可由H(z)得到FIR数字滤波器的频率响应:)(10)()(|)()(HjnjNnezjeHenhzHej(1-2-1)式中H(w)是)(jeH的幅频特性,)(是)H(ej的相频特性)))(Re())(Im(arctan()(jjeHeH(1-2-2)[4]中讨论了由于h(n)的长度N取奇数或偶数时对H(w)的特性有影响,FIR滤波器的幅频特性可以分为以下4种情况:(1)第Ⅰ种类型:h(n)为偶对称,且N为奇数根据式:])21cos[()()(10nNnhHNn可以得到滤波器的幅频函数为:2/)1(0)cos()()(NnnnaH(1-2-3)其中)21()0(Nha,)2(2)(nNhna,n=1,2,...,(N-1)/2。幅度函数)(H对2,,0成偶对称。(2)第II中类型:h(n)为偶对称,且N为偶数根据式:10])21cos[()()(NnnNnhH可得滤波器的幅度函数为:2/1)]21(cos[)()(NnnnbH其中:2,...,2,1),2(2)(NnnNhnb。幅度函数)(H对于20或呈偶对称。如果数字滤波器在处不为零,则不适合这类数字滤波器来设计。(3)第III种类型:)(hn为奇对称,且N为奇数根据式:10)]21(sin[)()(NnnNnhH可得滤波器的幅度函数为:2/)1(1)sin()()(NnnncH(1-2-5)其中21......,2,1),2(2)(NnnNhnc,。数字滤波器在20,,处不为零,则不适合这类数字滤波器来设计。(4)第IV中类型:H(n)为奇对称,且N为偶数根据式:10)]21(sin[)()(NnnNnhH可得到滤波器的幅频函数可表示为:2/1)]21(sin[)()(NnnndH其中:2,...,2,1),2(2)(NnnNhnd。幅度函数H(w)对w=π呈偶对称,如果数字滤波器在w=0,2π处不为零,则不适合用这类数字滤波器来设计。1.3窗函数的介绍设计滤波器尽量要求窗函数满足以下两项要求:(1)窗谱主瓣尽可能地窄,以获取较陡的过渡带。(2)尽量减少窗谱的最大旁瓣的相对幅度。也就是能量尽量集中于主瓣,这样使尖峰和波纹减小,就可增大阻带的衰减。但是这两项要求是不能同时满足的。当选用主瓣宽度较窄时,虽然得到陡峭的过渡带,但通带和阻带的波动明显增加;当选用最小的旁瓣幅度时,虽能得到平坦的幅度响应和较小的阻带波纹,但过渡带加宽,即主瓣会加宽。因此,实际所选用的窗函数往往是它们的折中。设计FIR滤波器常用的窗函数有:矩形窗、三角窗、汉宁窗、海明窗、布拉克曼窗、凯塞窗等。以下是几种窗函数的性能比较:(借的书上有这个表格)2.FIR数字滤波器设计及实现低通滤波器的设计低通滤波器允许信号中的低频或直流分量通过,抑制高频分量或者干扰和噪声。窗函数矩形窗三角窗汉宁窗海宁窗布莱克曼窗凯赛尔窗3基于MATLABGUI的FIR滤波器的仿真3.1FIR数字滤波器设计所实现的任务[6]中介绍了GUI设计工具应用的平台。应用MATLABGUI设计一个界面友好的仿真软件,完成GUI界面的设计和回调函数的编写。它所能实现的任务有:(1)、能够实现人机交换。(2)、可以在界面输入通带截止频率和阻带截止频率。(3)、根据输入的数据计算并显示系统的最小阶数。(4)、根据输入的参数,得到通带波动系数Rp、最小阻带衰减系数Rs。(5)、根据题目要求显示对应波形。(6)、数据可以多次输入。3.2FIR数字滤波器界面设计[7]中给出了GUI有以下四种启动方式:(1)、在命令行窗口中输入guide;(2)、点击matlab界面上面的菜单中的GUIDE按钮;(3)、在START菜单中选MATLAB|GUIDE(GUIBuilder);(4)、在MATLABFile菜单中选New|GUI。本设计用的第一种方式设计GUI界面。点击guide界面上方的Run按钮,会生成一个fig文件,一个m文件,其中fig文件就是界面的图形,m文件是界面的回调函数,在m文件里完成回调函数的编写。设计如下图(1)所示的图形主面板,共包括3区域:(1)图形区:用于显示滤波器的仿真曲线。(2)参数设定区:由静态文本框和编辑文本框组成,实时的进行系统参数的设定。(3)按键区:实现参数的读入操作以及关闭页面操作。3.3FIR数字滤波器函数的编写3.3.1文本编辑框的回调函数参数输入时,wp、ws是否在[0,1]之间,如不正确显示错误对话框,程序如下:wp=str2double(get(handles.edit1_wp,'string'))*pi;ws=str2double(get(handles.edit2_ws,'string'))*pi;if(wp=pi)&(wspi)errordlg('wpisnotin[01],pleasecheckinputnumber');elseif(ws=pi)&(wppi)errordlg('wsisnotin[01],pleasecheckinputnumber');elseif(wp=pi)&(ws=pi)errordlg('wpandwsarenotin[01],pleasecheckinputnumber');EndEndend3.3.2按钮INPUT的回调函数读入通带截止频率和阻带截止频率,并绘制出对应曲线,其程序如下:functionpush1_input_Callback(hObject,eventdata,handles)wp=str2double(get(handles.edit1_wp,'string'))*pi;ws=str2double(get(handles.edit2_ws,'string'))*pi;if(wp=pi)&(wspi)errordlg('wpisnotin[01],pleasecheckinputnumber');elseif(ws=pi)&(wppi)errordlg('wsisnotin[01],pleasecheckinputnumber');elseif(wp=pi)&(ws=pi)errordlg('wpandwsarenotin[01],pleasecheckinputnumber');elseif(ws-wp0.2*pi)errordlg('输入错误!ws-wp应该大于等于0.2*pi!请重新输入');elsedeltaw=ws-wp;%过渡带宽的计算M=ceil(11*pi/deltaw);%按布莱克曼窗计算所需的滤波器长度MN=M+mod(M+1,2);n=0:1:N-1;wc=(ws+wp)/2;hd=ideal_lp(wc,N);wdbla=(blackman(N))';h=hd.*wdbla;[db,mag,pha,grd,w]=freqz_m(h,1);dw=2*pi/2000;Rp=-(min(db(1:1:wp/dw+1)));As=-round(max(db(ws/dw+1:1:501)));axes(handles.axes1)stem(n,hd);title('理想脉冲响应')axis([0N-1-0.51]);xlabel('n');ylabel('hd(n)');axes(handles.axes2)stem(n,h);title('实际脉冲响应')axis([0N-1-0.41]);xlabel('n');ylabel('h(n)');axes(handles.axes3)plot(w/pi,db);title('幅度响应(单位:dB)');gridon;xlabel('频率(单位:pi)');ylabel('分贝数');axis([01-15010]);set(gca,'XTickMode','manual','XTick',[0,0.2,0.35,0.65,0.8,1])set(gca,'YTickMode','manual','YTick',[-600]);axes(handles.axes4)plot(w,pha);title('相频特性');axis([0,3.15,-4,4]);xlabel('频率(pi)');ylabel('相位(Φ)');%用含多种频率成份离散时间信号作输入信号,得到通过滤波器后与输出信号的对比结果fs=15000;t=(0:100)/fs;x=sin(2*pi*t*750)+sin(2*pi*t*1850)+sin(2*pi*t*2500)+sin(2*pi*t*3350)+sin(2*pi*t*6100);y=filter(h,1,x);axes(handles.axes5)plot(t,x);title('输入波形');xlabel('t');ylabel('x');axes(handles.axes6)plot(t,y);title('输出波形');xlabel('t');ylabel('y');endendendend;guidata(hObject,handles);3.3.3按钮CLOSE的回调函数退出滤波器设计窗口,其程序如下:functionQuit_Callback(hObject,eventdata,handles)close3.4总程序的编写总程序见附页;界面显示的结果图如图(2)所示。4.结束语GUI是实现人机交互的友好界面,具有强大的功能,对于GUI在数字信号处理中的应用中,数字信号处理这门学科的知识是基础,要掌握数字信号处理的相关知识的原理后,并用代码来实现,才能很好地结合MATLAB进行GUI编程。本文从资料的搜集、文章的修改到最后的定稿,自始至终都得到了导师邵军虎老师的悉心指导,很感谢邵老师对我的课程设计给予的支持,在课程设计中给予无私的指导与帮助才使我能够在有限的时间里完成了课程设计任务。同时感谢在我完成课程设计过程中给予我关心以及帮助的同学们。clearall;ws=0.7*pi;wp=0.5*pi;deltaw=ws-wp;%过渡带宽的计算N=ceil(11*pi/deltaw);%按布莱克曼窗计算所需的滤波器长度Nn=0:1:N-1;wc=(ws+wp
本文标题:听鏁板瓧淇″佛
链接地址:https://www.777doc.com/doc-2579819 .html