ImageVerifierCode 换一换
你正在下载:

MaTLAB.docx

[预览]
格式:DOCX , 页数:12 ,大小:207.18KB ,
资源ID:4656567      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4656567.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MaTLAB.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MaTLAB.docx

1、MaTLAB基于 MATLAB(GUI)FIR滤波器设计摘 要面对庞杂繁多的原始信号, 如何提取所需信号、抑制不需要的信号这就需要使用滤波器。滤波器的作用主要是选择所需频带的信号内容而抑制不需要的其他频带的信号内容。数字滤波器因其精度高、可靠性好、灵活性大等优点, 在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像处理等工程实际应用中都很广泛。根据其冲击响应函数的时域特性可将数字滤波器分为IIR(有限长冲击响应)和FIR(无限长冲击响应)。作为强大的计算软件, MATLAB提供了编写图形用户界面的功能。所谓图形用户界面, 简称为GUI, 是由各种图形对象, 如图形窗口菜单按钮

2、、文本框等构建的用户界面。MATALB 可以创建图形用户界面GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。关键词:MATLAB GUI IIR滤波器 FIR滤波器用户界面(或接口)是指:人与机器(或程序)之间交互作用的工具和方法。如键盘、鼠标、跟踪球、话筒都可成为与计算机交换信息的接口。 图形用户界面(Graphical User Interfac

3、es ,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。 假如读者所从事 的数据分析、解方 程、计算结果可 视工作比较单一, 那么一般不会考虑 GUI 的制作。但是如果读者想向别人提供应用程序,想进行某种技术、方法的演示,想制作一个供反复使用且操作简单的专用工具,那么图形用户界面也许是最好的选择之一。 在这个具有挑战性的时代,把计算机充分运用到教学及工程运算中,虽然具有重要的意义,而随着计算机技术的发展,计算机软件在工程设计领域应用越来越广。本设

4、计研究是基于MATLAB的FIR数字滤波器的设计,是基于应用计算机软件编程。首先了解滤波器的基本工作原理,针对FIR滤波器,有各种不同的方法。FIR滤波器一般要求信号具有线性相位,同时由于脉冲响应无限长,因此具有永远稳定的特性。根据这个特点,。本文主要对FIR滤波器采用了窗函数法,最优设计法,最小二乘设计法,升余弦函数设计法和任意响应设计法来设计FIR滤波器,同时,还对滤波器进行阶数评估。滤波是信号处理中最基本有极为重要的技术,利用滤波器技术可以从复杂的信号中提取出所需要的信号,抑制不需要的信号。绝大多数传感器输出的信号,在使用过程中,都必须进行滤波,所以滤波器是具有一定传输选择特性的,对信号

5、进行加工处理的装置,它允许输入信号中的一些成分通过,抑制或衰减另一些成分。其功能是将输入信号变换为人们所需要的输入信号。滤波器特性:FIR系统只有零点,因此这类系统不像IIR系统那样易取得比较好的通带和阻带衰减特性。但FIR系统有自己突出的优点,其一是系统总是稳定的,其二是易实现线性相位,其三是允许设计多通带(或多阻带)滤波器。FIR滤波器是指系统的单位冲击响应h(n)仅在有限的范围内有非零值的滤波器。N-1阶滤波器的系统函数H(z)可表示为H(n)是的N-1次多项式,它在z平面上有N-1个零点,原点z=0是N-1阶重极点。因此,FIR滤波器永远稳定。FIR滤波器的频率响应为由于H()一般为复

6、数,因此,可将其表示成2.2 FIR滤波器的线性相位特性FIR滤波器的频率响应为由于H()一般为复数,因此,可将其表示成线性相位特性是指是w的线性函数,即式中,是常数。此时通过这一系统的各频率分量的时延为相同的常数,系统的群时延为即系统的时延是一个与w无关的常数,称系统H(z)具有严格的线性相位。由于严格线性相位条件在数学上处理较为困难,因此在FIR滤波器设计中一般使用广义线性相位。若一个离散系统的频率响应H()可以写为H()=其中,和是与w无关的常数,是w的是函数(可任意取值),则称为广义幅频响应,称为广义相频响应。上式中,为当=0时,称是第一类线性相位,当(一般)时,称是第二类线性相位。滤

7、波器设计软件GUI界面设计在matlab命令行窗口中输入guide或点击matlab界面上面的菜单中的图标,打开gui设计的图形界面如图5 。然后拖入所要的图形控件,按需要修改外观和空间属性,直至满足要求,如图6。设置属性点击guide界面上方的Run按钮,会生成一个fig文件,一个m文件,其中fig文件就是界面的图形,m文件是界面的回调函数,在m文件里每个控件的回调函数都已经自动生成,控件要做的工作就是在文件框架下定义某些特殊要求的状态并补充完整回调函数场, 使单击控件时激活回调程序完成一定的功能。 图 5 GUI设计的图形界面 图6 “滤波器设计软件”GUI界面设计程序代码:functio

8、n AutoChoose(handles)Nn=128;DigitalFilter_value=get(handles.DigitalFilter,Value);FilterDesign_value=get(handles.FilterDesign,Value);Windows_value=get(handles.Windows,Value);FilterType_value=get(handles.FilterType,Value);DisplayType_value=get(handles.DisplayType,Value);Order_value=get(handles.Order,V

9、alue);Rp_value=str2double(get(handles.Rp,String);Rs_value=str2double(get(handles.Rs,String);Fs_value=str2double(get(handles.Fs,String);Fp1_value=str2double(get(handles.Fp1,String);Fp2_value=str2double(get(handles.Fp2,String);Fs1_value=str2double(get(handles.Fs1,String);Fs2_value=str2double(get(handl

10、es.Fs2,String);wp1=2*Fp1_value/Fs_value; wp2=2*Fp2_value/Fs_value;ws1=2*Fs1_value/Fs_value;ws2=2*Fs2_value/Fs_value;wp=wp1,wp2;ws=ws1,ws2;if(DigitalFilter_value=1) if(FilterDesign_value=1)if(FilterType_value=1)|(FilterType_value=2) n,Wn=buttord(wp1,ws1,Rp_value,Rs_value)set(handles.MinOrderDisplay,s

11、tring,num2str(n)elseif(FilterType_value=3)|(FilterType_value=4) n,Wn=buttord(wp,ws,Rp_value,Rs_value);set(handles.MinOrderDisplay,string,num2str(n) end end else if(FilterDesign_value=2) if(FilterType_value=1)|(FilterType_value=2) n,Wn=cheb1ord(wp1,ws1,Rp_value,Rs_value); set(handles.MinOrderDisplay,

12、string,num2str(n) else if(FilterType_value=3)|(FilterType_value=4) n,Wn=cheb1ord(wp,ws,Rp_value,Rs_value); set(handles.MinOrderDisplay,string,num2str(n) end end else if(FilterDesign_value=3)if(FilterType_value=1)|(FilterType_value=2) n,Wn=cheb2ord(wp1,ws1,Rp_value,Rs_value); set(handles.MinOrderDisp

13、lay,string,num2str(n) else if(FilterType_value=3)|(FilterType_value=4) n,Wn=cheb2ord(wp,ws,Rp_value,Rs_value); set(handles.MinOrderDisplay,string,num2str(n)end end else if(FilterDesign_value=4) if(FilterType_value=1)|(FilterType_value=2) n,Wn=ellipord(wp1,ws1,Rp_value,Rs_value); set(handles.MinOrder

14、Display,string,num2str(n) else if(FilterType_value=3)|(FilterType_value=4) n,Wn=ellipord(wp,ws,Rp_value,Rs_value); set(handles.MinOrderDisplay,string,num2str(n) end end end end end end else if(DigitalFilter_value=2) if(FilterType_value=1)|(FilterType_value=2) n,Wn=buttord(wp1,ws1,Rp_value,Rs_value);

15、 set(handles.MinOrderDisplay,string,num2str(n) else if(FilterType_value=3)|(FilterType_value=4) n,Wn=buttord(wp,ws,Rp_value,Rs_value); set(handles.MinOrderDisplay,string,num2str(n)switch DigitalFilter_value case 1 b,a=butter(n,Wn);h,f=freqz(b,a,Nn,Fs_value); axes(handles.Magnitude); if(DisplayType_v

16、alue=1) plot(f,abs(h)else plot(f,20*log10(abs(h) end grid on;axes(handles.Phase);plot(f,angle(h); case 2 b,a=butter(n,Wn,high); h,f=freqz(b,a,Nn,Fs_value);axes(handles.Magnitude); if(DisplayType_value=1) plot(f,abs(h)else plot(f,20*log10(abs(h) end grid on;axes(handles.Phase);plot(f,angle(h);grid on

17、;case 3 b,a=butter(n,Wn);h,f=freqz(b,a,Nn,Fs_value);axes(handles.Magnitude);if(DisplayType_value=1) plot(f,abs(h)else plot(f,20*log10(abs(h) endgrid on; axes(handles.Phase);plot(f,angle(h);grid on;case 4 b,a=butter(n,Wn,stop);h,f=freqz(b,a,Nn,Fs_value);axes(handles.Magnitude);if(DisplayType_value=1)

18、 plot(f,abs(h)else plot(f,20*log10(abs(h)end grid on;axes(handles.Phase);plot(f,angle(h);grid on; end运行和结果显示在图形界面下, 按“ 运行” ,出现如图15 所示界面,选择要设计的滤波器选项,编辑框中输人要求设计的数字滤波器的性能指标, 选择“Run”命令按钮, 出现如图所示的模拟低通原型滤波器幅频响应和相频响应曲线, 最小阶次。当选择了“Auto Run”按钮,在“滤波器类型选择”旁的下拉菜单框中选择其他类型的滤波器会立刻出现此类型的滤波器的图形。例如选择设计IIR的Butterworth

19、低通滤波器,其Fs=1000Hz,Fp1=100Hz,Fs1=300Hz,Rp=3dB,Rs=20dB,n=4,显示如图16 图15 运行显示界面 图 16 Butterworth低通滤波器2 显示不同滤波器的显示结果1、选择设计IIR低通滤波器,其Fs=1000Hz,Fp1=100Hz,Fs1=300Hz,Rp=3dB,Rs=20dB,n=4,利用四种不同滤波器进行设计,如图17、18、19、20显示: 图17 Butterworth低通滤波器 图18 Chebyshev低通滤波器 图19 Chebyshev低通滤波器 图20 Ellipse低通滤波器2、选择设计FIR带通滤波器,其Fs=4

20、000Hz,Fp1=900Hz,Fp2=1300Hz,Fs1=600Hz, Fs2=1500Hz, Rp=1dB,Rs=40dB,n=20,Rp=3dB,Rs=20dB,n=4,利用四种不同滤波器进行设计,如图21、22、23、24、25、26显示: 图21 Boxar窗带通滤波器 图22 Bartlett窗带通滤波器 图22 Blackman窗带通滤波器 图23 Hanning窗带通滤波器设计总结 GUI是实现人机交互的中介,具有强大的功能,可以完成许多复杂的程序模块。使用它,需要具有一定的知识储备和必要的经验技巧。并且要充分利用好MATLAB的帮助文档,仔细研读HELP是最好的办法。需要了

21、解函数句柄等必要基础知识,熟悉各控件对象的基本属性和方法操作,知晓不同控件的合适使用条件及其特有的功能,并会采用不同的使用手段来实现相同功能的设计。同时还需要详细掌握菜单和控件。菜单很简单,就是弄清除菜单之间的关系和如何调用就可以。控件的使用主要是用好CreateFcn和Callback属性。CreateFcn中的语句就是在程序运行时,就立即执行脚本。如果希望界面可控,那么最好用Callback属性。在相应控件下,添加相应的脚本就可以实现比较复杂计算绘图等功能。 在设计GUI的时候,要注意一定的原则和步骤,分析界面所要求实现的主要功能,明确设计任务,构思草图,设计界面和属性,编写对象的相应代码,实现控件的交互调用。 对于GUI在数字信号处理中的应用中,数字信号处理这门学科的知识是基础,要掌握数字信号处理的相关知识的原理后,并用代码来实现,才能很好地结合MATLAB进行GUI编程。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1