基于MATLAB+GUI的滤波器设计软件设计.docx
- 文档编号:6930569
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:43
- 大小:464.26KB
基于MATLAB+GUI的滤波器设计软件设计.docx
《基于MATLAB+GUI的滤波器设计软件设计.docx》由会员分享,可在线阅读,更多相关《基于MATLAB+GUI的滤波器设计软件设计.docx(43页珍藏版)》请在冰豆网上搜索。
基于MATLAB+GUI的滤波器设计软件设计
【摘要】
面对庞杂繁多的原始信号,如何提取所需信号、抑制不需要的信号这就需要使用滤波器。
滤波器的作用主要是选择所需频带的信号内容而抑制不需要的其他频带的信号内容。
数字滤波器因其精度高、可靠性好、灵活性大等优点,在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像处理等工程实际应用中都很广泛。
根据其冲击响应函数的时域特性可将数字滤波器分为IIR(有限长冲击响应)和FIR(无限长冲击响应)。
作为强大的计算软件,MATLAB提供了编写图形用户界面的功能。
所谓图形用户界面,简称为GUI,是由各种图形对象,如图形窗口菜单按钮、文本框等构建的用户界面。
MATALB可以创建图形用户界面GUI(GraphicalUserInterface),它是用户和计算机之间交流的工具。
MATLAB将所有GUl支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。
而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。
关键词:
MATLAB;GUI;IIR;滤波器
Abstract
Facingthehugerangeoforiginalsignal,howtoextracttherequiredsignalandsuppressunwantedsignalswhichneedtousethefilter.Theroleoffiltersistoselectthedesiredsignalfrequencybandandsuppressthecontentsoftheotherbandsdonotneedthecontentsofthesignal.Digitalfiltersbecauseoftheirhighaccuracy,reliability,andflexibilityadvantages,inthespeechsignalprocessing,signalspectrumestimation,signalde-noising,thenumberofwirelesscommunicationsinfrequencyaswellasimageprocessingandotherprojectsarewidepracticalapplication.Impulseresponsefunctionsinaccordancewithitstime-domaincharacteristicscanbedividedintodigitalfilterIIR(finiteimpulseresponse)andFIR(infiniteimpulseresponse).Asapowerfulsoftware,MATLABprovidesagraphicaluserinterfacetopreparethefunction.Theso-calledgraphicaluserinterface,referredtoastheGUI,byavarietyofgraphicobject,suchasthegraphicswindowmenubutton,textbox,suchasbuildingauserinterface.
MATALBcancreateagraphicaluserinterfaceGUI(GraphicalUserInterface),itisbetweenuserandcomputertools.MATLABsupportforallusersGUlcontrolsareintegratedinthisenvironmentandprovidetheinterfaceappearanceandbehaviorinresponsetothewayattributesettingsmethods,withtheimprovedversion,thiscapabilitywillcontinuetostrengthen.Andapowerfulgraphicscapabilities,caneasilyaccesstohigher-qualitycurve.
Keywords:
MATLAB;GUI;IIR;filter
1设计任务
1设计目的
1.巩固所学习过的关于数字信号处理的滤波器的设计
2.学习使用MATLABGUI设计工具应用平面
2设计要求
要求:
“滤波器设计软件”设计
1、要有人机交互界面。
2、滤波器设计的类型、参数均有多个值可供选择。
3、当用户选择(或输入)滤波器的参数时,能够及时显示设计好的滤波器的频谱。
4、该软件可设计FIR或IIR型滤波器至少一种。
2MATLABGUI的简介
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是矩阵实验室(MatrixLaboratory)的简称,和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用。
MATALB可以创建图形用户界面GUI(GraphicalUserInterface),它是用户和计算机之间交流的工具。
MATLAB将所有GUl支持的用户控件都集成在这个
环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。
而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。
3滤波器设计原理
3.1滤波器概述
随着信息时代和数字世界的到来,数字信号处理已成为当今一门极其重要的学科和技术领域。
数字信号处理在通信、语音、图像,自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。
在数字信号处理中,数字滤波器占有极其重要的地位。
现代数字滤波器可以用软件或设计专用的数字处理硬件两种方式来实现,用软件来实现数字滤波器优点是随着滤波器参数的改变,很容易改变滤波器的性能。
根据数字滤波器单脉冲响应的时域特性可将数字滤波器分为两种,即IIR(InfiniteImpulseResponse)无限长脉冲响应数字滤波器和FIR(FiniteImpulseResponse)有限长脉冲响应数字滤波器。
从功能上分类,可分为低通、高通、带通、带阻滤波器。
3.2IIR数字滤波器
3.2.1IIR数字滤波器设计原理
滤波器的设计质上是寻找一个既能物理实现,又能满足给定频率特性指标要求的系统传输函数。
IIR滤波器一般采用递归型的结构,系统的输入与输出服从N阶差分方程:
相应的传输函数为:
设计IIR数字滤波器就是要确定传输函数中的系数
、
或零极点增益
、
、A,使滤波器的频率特性满足给定的性能指标要求。
设计原理主要包括两个方面:
一是根据设计指标,先设计出相应的模拟滤波器再通过脉冲响应不变法或双线性变换法转换成对应的数字滤波器;二是选择一种优准则,如最小均方准则,再在
,先最误差此准则下求出滤波器传输函数的系数。
根据设计理论,在MATLAB环境下设计IIR数字滤波器主要有四种方法:
一是典型设计法;二是完全设计法;三是最优设计法;四是工具设计法。
由于完全设计法程序简单,我们在这里利用完全设计法设计滤波器。
2、所谓数字滤波器,是指输入,输出均为数字信号,通过一定运算关系改变输入信号所含
频率成分的相对比例或者滤除某些频率成分的硬件。
实质上就是一个由有限精度算法实现的线性时不变离散系统。
它的基本工作原理是利用离散系统的特性对系统输入信号进行加工和变换,改变输入序列的频谱或信号波形,让有用的频率分量通过,抑制无用的信号分量输出,根据其频率特性同样可以分为低通,高通,带通,带阻。
如果要处理的信号是模拟信号,就可以通过A/D或者D/A转换,在信号形式上进行匹配转换,同样可以使用数字滤波器对模拟信号进行滤波[1]。
数字滤波器滤波的数学表达式:
(1-1)
如果滤波器的输入输出信号都是离散信号,那么该滤波器的脉冲响应也一定是离散信
号,这样的滤波器就成为了数字滤波器。
其频域特性为:
(1-2)
其中
分别是数字滤波器的输出序列和输入序列的频域响应,
是数字滤波器的频域响应。
可以看见按照输入信号的频谱特点和处理信号的目的适当选择滤波
器的频域响应
,使得滤波后的输出信号满足设计性能要求,就是滤波器的滤波原理。
1.1IIR数字滤波器传输特性
IIR数字滤波器的系统函数可以表示为:
(1-3)
式中H(Z)称为N阶IIR滤波器函数,它是一种递归型的滤波器。
1.2数字滤波器的技术要求
我们通常设计的数字滤波器一般属于选频滤波器,我们的目的是要设计一个因果可实现
的滤波器,另外买也要考虑到成本和复杂性问题,因此实用中通带和阻带都允许一定的误差
容限,即通带不一定是完全水平的,阻带也不可能完全衰减到零[2]。
而且,通带和阻带之间
还要设置一定带宽的过渡带。
如下图表示低通滤波器的技术要求:
图1.2.1低通滤波器特性
Figure1.2.1lowpassfilter'scharacteristic
图中,
分别表示通带截止频率和阻带截止频率,通带频率范围为0≤w≤pw,
通带中要求
,阻带截止频率范围
,再阻带中要求
,从
到
称为过渡带,在这个频带内,幅度响应从通带平滑的下落到阻带。
2MATLAB简介
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和SIMULINK两大部分。
MATLAB是矩阵实验室(MatrixLaboratory)的简称,和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。
一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。
目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。
本文将利用其中的信号处理工具箱来设计IIR数字滤波器。
3IIR数字滤波器的几种设计方法
3.1程序设计法
IIR数字滤波器设计的一般方法是先设计低通模拟滤波器,进行频率变换,将其转换为相应的(高通,带通等)模拟滤波器,在转换为高通,带通或带阻数字滤波器,由模拟滤波器设计数字滤波器的方法。
这是因为模拟滤波器设计方法已经很成熟,它不仅有完整的设计公式,还有完善的图表供查阅,另外,还有一些典型的滤波器类型可供我们使用。
对设计的全过程的各个步骤,MATLAB都提供了了相应的工具箱函数,使IIR数字滤波器设计变得非常简单。
3.1.1设计方法
程序设计法[3]是基于MATLAB中相应的工具箱函数来实现的,IIR数字滤波器的设计步骤可由图3.1.1所示的流程图来表示。
这个图也清晰的表示了5类20个信号处理工具箱函数的作用,
图3.1.1滤波器设计流程
Figure3.1.1flowoffilter’sdesign
在MATLAB中,模拟滤波器的系统函数:
(3-1)
数字滤波器的系统函数:
(3-2)
在实际工程中,需要的设计结果是系数向量B和A,用B和A来综合滤波器的硬件实现结构或软件运算结构,为了直观的看出设计结果,本文的实例均以滤波器幅频响应曲线作为设计结果输出。
如果需要滤波器系数,在运行程序后,只要在MATLAB命令窗口键入系数向量名,则相应的系数就显示出来了。
3.1.2程序设计及分析
1)设计高通和带通BUTTERWORTH数字滤波器
我们给出四阶归一化BUTTERWOTH模拟滤波器的系统函数
(3-3)
用双线性变换法从Ha(s)设计四阶带通BUTTERWOTH数字滤波器
并图示
设计采样周期T=1s,指标:
本例主要涉及三个问题:
①由数字滤波器指标求相应的模拟滤波器指标;
②模拟滤波器频率变换(因为已给定阶数和模拟滤波器的归一化低通原型);
③由相应的模拟滤波器到数字滤波器(双线性变换法)。
由于调用bilinear函数将模拟滤波器转换成数字滤波器[4]
非常容易,并且有效抑制频率失真的问题,本例给定了数字滤波器指标,所以首先要设计处与该指标相应的四阶BUTTERWORTH模拟滤波器,然后调用bilinear函数将其转换为数字滤波器即可,应当特别注意的是,对于双线性变换法,由数字边界频率求相应的模拟边界频率时,一定要考虑预畸变矫正。
只有这样,最终设计结果才能满足所给指标。
设计高通数字滤波器时,相应的模拟高通滤波器3dB截止频率为
(3-4)
设计带通数字滤波器时,相应的模拟滤波器的3dB截止频率为
(3-5)
调用MATLAB频率变换函数lp2lp,lp2hp,lp2bp,分别实现从模拟低通到模拟低通,高通带通,带阻的频率变换。
[Bt,At]=lp2hp(B,A,wc),将系数向量为B和A的模拟滤波器归一化低通原型(3Db)截止频频为1rad/s),变换成3dB截止频率为wc的高通模拟滤波器,返回高通模拟滤波器系数向量Bt和At。
[Bt,At]=lp2bp(B,A,wo,Bw)将系数向量为B和A的模拟滤波器归一化低通原型变换成中心频率为wo,带宽为Bw的带通模拟滤波器,返回带通模拟滤波器的系数向量Bt和At。
其中,wo=uclcΩΩ,lcucwBΩ−Ω=,由以上原理我们来编写如下程
%用双线性变换法设计数字高通和带通滤波器
clear;closeall
T=1;wch=pi/2;%T:
采样间隔,wch:
数字高通3dB截止
Wlc=0.35*pi;wuc=0.65*pi;%wlc,wuc;数字高通3dB截止频率
B=1;A=[1,2.6131,3.4142,2.6131,1];
[h,w]=freqs(B,A,512);%求原归一化模拟滤波器的频率响应
subplot(3,2,1);plot(w,20*log10(abs(h)));%画模拟滤波器幅频特性
grid;axis([0,10,-90,0])
xlabel('w/');title('模拟低通幅度(dB)')%
(1)设计高通
omegach=2*tan(wch/2)/T;%预畸变求模拟高通3dB截止频率
[Bhs,Ahs]=lp2hp(B,A,omegach);%模拟域低通转换为高通系数
[Bhz,Ahz]=bilinear(Bhs,Ahs,1/T);%模拟转换位数字高通系数变量
[h,w]=freqz(Bhz,Ahs,512);%求画出数字滤波器幅频特性
Subplot(3,2,3);plot(w/pi,20*log10(abs(h)));
grid;axis([0,1,-150,0])
xlabel('w/');title('数字滤波器幅度(dB)')%
(2)设计带通
omegalc=2*tan(wlc/2)/T;%预畸变求滤波器通带低端截止频率
omegauc=2*tan(wuc/2)/T;%预畸变求滤波器通带高端截止频率
wo=sqrt(omegalc*omegauc);Bw=omegauc-omegalc;
[Bbs,Abs]=lp2bp(B,A,wo,Bw);%模拟域低通转换为带通系数
[Bbz,Abz]=bilinear(Bbs,Abs,1/T);%模拟转换为数字带通系数变量
[h,w]=freqz(Bbz,Abz,512);%求并画出数字滤波器幅频特性
subplot(3,2,4);plot(w/pi,20*log10(abs(h)));
grid;axis([0,1,-150,0])
xlabel('w/pi');title('数字滤波器幅度(dB)')
程序运行结果如图3.1.2,3.1.3,3.1.4所示分别表示模拟低通幅度,数字高通幅度和数字带通幅度特性。
、
图3.1.2模拟低通幅度
Figure3.1.2analoglowpassfilter’srange
图3.1.3数字高通幅度
Figure3.1.3digitalhighpassfilter’srange
图3.1.4数字带通幅度
Figure3.1.4digitalbandpassfilter’srange
3.1.3结论
从以上一系列函数设计中,我们由MATLAB函数来设计滤波器是次优化的,它的设计步骤为:
1先选择设计方法;2猜测滤波器参数,后进行设计;3观察滤波器的响应,判断其是否符合要求;4反复这一尝试与失败过程直到符合要求。
这种设计方法,很显然在设计要求上进行权衡分析是不是很有效,它更多时候是凭借设计者的经验来设计的,需要反复的检验,并且编程的过程很繁琐,工作量是比较大的,因此我们下面将探讨更优化的设计方法。
3.2基于信号处理用户界面设计IIR数字滤波器
基于MATLAB函数的滤波器设计完成后,需要对已设计的滤波器的频率响应要进行校核。
要得到幅频、相频响应特性,运算量也是很大的。
而利用MATLAB强大的信号处理界面工具进行计算机辅助设计,可以快速有效地设计数字滤波器,大大地简化了计算量。
3.2.1FDATOOL设计IIR数字滤波器
我们将以一个IIR滤波器的设计实例来具体说明使用MATLAB工具箱的方便。
要求设计Chebyshev1型低通滤波器满足指标,首先在ResponseType中选择Bandpass高通滤波器,然后在下面的DesighMethod中选择IIR类型,并且指定FilterOrder项中的阶数SpecifyOrder=10,由于是设计chebyshev滤波器,其下面Option就不必选择。
然后在FrequencySpecifications中选择Unit为Hz,给出采样频率Fs=1000,;最后在MagnitudeSpecification中选择Unit为dB,Apass=1。
设置完成后点击DesignFilter即可得到所设计的IIR滤波器。
通过菜单选项Analysis可以在特性区看到所设计的幅频响应、相频响应、冲击响应和零极点配置等特性。
设计完成后将结果保存,封装为filterl.fda文件,下面是运用FDATool设计滤波器:
其中幅频特性如图3.2.1所示
图3.2.1FDA设计主界面
Figure3.2.1maincontactsurfaceofFDAdesign
图3.2.2相频特性
Figuer3.2.2phase-frequencycharacteristic
图3.2.3冲激响应特性
Figure3.2.1Impulseresponsecharacteristic
3.2.2结论
从以上这些界面中我们可以清晰明了的看到设计的该滤波器的幅频,相频和冲击响应特性:
我们能够分析到,图3.2.1中Chebshev1型滤波器具有等纹波的通频带、阻带衰减的特性,总之,使用FDATOOL工具包设计和分析滤波器,是非常方便易行的,而且交互性良好,不需要极其复杂的程序编制就可以实现。
而且我们在最后的仿真模型设计中将载入这一模块进行信号滤波。
4基于FDESIGN更加优化的设计方法
4.1FDESIGN设计方法
FDESIGN是一种面向对象的滤波器设计方法。
这种设计方法的设计思路是:
1载入需要处理的信号源
2根据需要,设计相应的数字滤波器,对信号进行滤波,显示滤波后效果
3分析滤波后信号的频谱,如果未达到要求,可以修改滤波参数重复试验
4.2基于SPTOOL设计IIR数字滤波器(面向对象设计)
SPTOOL是FDESIGN设计法中常用的工具箱,它包含了信号处理工具箱中的大部分函数,可以方便快捷地完成对信号、滤波器及频谱的分析、设计和浏览,因此只需要操作界面就可以载入,观察,分析,和打印数字信号,分析和设计数字滤波器[5]。
首先在MATLAB命令窗口输入sptool命令:
在命令窗中写入以下命令
Fs=500;t=(0:
500)/Fs;
f=sin(2*pi*t*40)+sin(3*pi*t*50)+sin(2*pi*t*100);
此时,变量Fs、t、s将显示在workspace列表中,如图4.2.1所示;我们按照以下步骤操作:
1)点击菜单File/Import将信号f导入并取名为f。
2)单击Filters列表下的New,按照参数要求设计出滤波器filt1。
3)将滤波器filt1应用到f信号序列。
分别在Signals、Filters、Spectra列
表中选择f、filt1、mtlbseauto单击Filters列表下的Apply按钮,在弹出的ApplyFilter对话框中将输出信号命名为信号3。
4)进行频谱分析。
在Signals中选滤波后的信号信号3,单击Spectra下的Crea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB GUI 滤波器 设计 软件设计
![提示](https://static.bdocx.com/images/bang_tan.gif)