MATLABGUI自动控制计风格_第1页
MATLABGUI自动控制计风格_第2页
MATLABGUI自动控制计风格_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于Matlab GUI的模拟带通滤波器的设计0引言模拟带通滤波器在信号的检测和传输过程中起着很重要的作用,但在传统模拟带通滤波器 的设计过程中需要大量繁琐的数值计算,如果手工计算则费时费力。也有许多公司开发了 相关的滤波器设计软件,如AnsoftDesigner , Filterlab 等,但是它们大多数使用起来不容易上手,而且价格比较昂贵。Matlab中的图形界面编程环境 GUIDE为用户开发软件界面提供了强有力的工具。在图形界面编程环境GUIDE下,设计好滤波器的设计工具界面后,对界面上各个控件的回调函数进行编写就能设计出交互式滤波器的分析设计软件。本文在Matlab GUI基础上设计了

2、针对 Chebyshev型模拟带通滤波器的设计分析软件。用户 在使用时只需输入要设计的滤波器设计指标值,选择要设计的滤波器类型,即可在分析滤 波器特性时只需选择相应菜单就能得出对应的特性。该工具解决了用户在设计Chebyshev型模拟带通滤波器时大量繁琐的数值计算,不仅可以作为研究设计Chebyshev型模拟带通滤波器的辅助工具,还可以作为设计滤波器等相关课程的辅助教案软件。1模拟带通滤波器的设计理论目前,模拟高通滤波器、带通滤波器和带阻滤波器的设计方法都是先将要设计的滤波器技 术指标通过某种频率转换关系转换成模拟低通滤波器的技术指标,并依据这些技术指标设 计出低通滤波器的转移函数,然后再依据

3、频率转换关系变成所要设计的滤波器的转移函数。 项目实际中,设计高通、带通、带阻滤波器的常用方法是借助低通原型滤波器,经频率变 换和元件变换得到。对于模拟带通滤波器的设计,首先是将要设计的模拟带通滤波器的技术指标通过频率变换 关系,转换成模拟低通滤波器的技术指标,其次根据这些技术指标设计出低通切比雪夫滤 波器转移函数,最后再依据频率转换关系变成模拟低通切比雪夫滤波器,其具体设计流程 如图1所示。田】 握摊爭迫扮比生丸溥渍爲设訐遑料2 Matlab GUI 设计工具简介在Matlab中,图形用户界面 (graphical user in terface, GUI是Matlab中一个专用于GUI程序

4、设计的向导设计器,而GUI是由各种图形对象,如图形窗口、图轴、菜单、按钮、文本框等构建的用户界面,是人机交互的有效工具和方法。通过GUIDE可以很方便地设计出各种符合要求的图形用户界面。用户通过一定的方法(如鼠标或键盘 选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。GUI设计既能以基本的Matlab程序设计为主,也能以鼠标为主,利用GUIDE工具进行设计,也可综合以上两种方法进行设计。GUIDE主要是一个界面设计工具集。Matlab将所有GUI支持的用户控件都集成在这个环境中并提供界面外观、属性和行为相应方式的设置方法。GUIDE将用户保存设计好的图形用户界面保存在

5、一个FIG资源文件中,同时自动生成包含图形用户界面初始化和组件界面布局控制代码的M文件,这个M文件为实现回调函数的编写提供了一个参考框架。FIG文件是一个二进制文件,包含系列化的图形窗口对象。所有对象的属性都是用户 创建图形窗口时保存的属性。该文件最主要的功能是对象句柄的保存。M文件包含GUI设计、控制函数及控件的回调函数,主要用来控制GUI展开时的各种特征。该文件基本上可以分为GUI初始化和回调函数 2个部分,控件的回调函数可根据用户与GUI的具体交互行为分别调用。3软件界面设计在软件设计时,通过文本编辑框控件来接收用户输入的滤波器设计指标值,考虑到分析滤 波器时输出的参数较多,如果用一一对

6、应的文本框来接收输出的参数值,则使软件界面在 设计中难以布局,并影响了界面的美观,所以只用一个文本编辑框控件来实现多个参数的 输出。在滤波器类型选择控件方面,因为只用2种滤波器来进行选择设计,所以使用两个单选按钮,以实现滤波器类型的选择;在滤波器特性曲线分析和参数计算方面,利用图形 界面设计工具GUIDE提供的菜单编辑器来设计出分析、计算菜单,并加入相应的功能子菜 单。绘制输出滤波器的特性曲线时使用一个坐标轴来实现各个特性曲线的绘制,这样可以 使软件界面简洁明了。最后对参数输入和参数输出区进行功能区域划分,利用控件工具箱 中的框架按钮,将参数的输入与输出区划分,利用控件工具箱中文本标签对上面相

7、应控件 的功能命名。将设计好的界面文件保存运行,就可以看到软件在运行时显示出的实际效果。设计的界面如图2所示,设计出的软件界面由4个部分组成:菜单栏、参数输入区、参数输出区、绘图区。甜2 歆伸界囲其中,设计的分析菜单包括滤波器的幅频特性、相频特性、阶跃响应、脉冲相应和零极点 子菜单,计算菜单包括阶数、零点、极点、增益、转移函数(分子和转移函数(分母子菜单。4应用程序M文件的设计GUI包含许多可以使软件终端与用户界面进行交互的用户界面组件,GUI实现的任务之一就是控制组件如何响应用户的行为。Matlab通过创建应用程序 M文件为GUI控制程序提供一个框架。所有代码(包括回调函数 都包含在应用程序

8、 M文件中,即完成了图形界面的设计 后,应用程序设计的主要工作是控件回调函数的设计。下面讨论程序设计流程及控件回调 函数的设计。4.1程序设计流程软件运行时,系统首先初始化。接着判断输入的滤波器参数及其类型是否正确,不正确重 新输入,正确即可选择相应的功能菜单,实现相应的功能。程序具体流程图如图3所示。I珂吨疋节名矗1H田月乳序设计純屯离4.2控件回调函数设计该软件的控件回调函数包括“确定”按钮控件回调函数、“清除”按钮控件回调函数、滤 波器类型选择控件回调函数、“分析”菜单下各子菜单功能回调函数和“计算”菜单下各 子菜单功能控回调函数的设计。限于篇幅,仅讨论“分析”菜单下各个菜单功能回调函数

9、 和“计算”菜单下各功能回调函数的设计。4.2.1“分析”菜单下的各子菜单功能回调函数设计在“分析”菜单下应包含“幅频特性”、“相频特性”、“阶跃响应”、“脉冲响应”、“零极点图”子菜单,分别用来实现幅频特性曲线、相频特性曲线、阶跃响应、脉冲响应、 零极点图的绘制。其中,“幅频特性”菜单用来绘制给定参数的滤波器的幅频特性曲线, 在程序设计过程中首先使用Matlab中的axes函数,得到坐标轴控件的句柄,以便绘制特性曲线。在得到用户输入的设计指标值后,利用if else语句来判断用户所选择的是哪一种滤波器类型,在阶数和截止频率的计算中,利用信号处理工具箱中的cheblord和cheb2ord函数

10、来计算,再用 chebyl和theby2函数来计算转移函数的分子、分母,设计出 用户所要求的滤波器。在计算滤波器幅值时,利用freqs函数计算出转移函数的响应。在绘制滤波器幅频特性曲线时,利用plot函数来完成,即在 plot函数的参数中设置相关值, 以完成幅频特性曲线的绘制。为了更好地观察到滤波器的设计是否达到相关的设计要求, 利用 line 函数在坐标上标识出通带最大损耗、阻带最小损耗等点,这样可以直观地观察到 所设计出的滤波器是否符合用户提出的要求,其具体程序如下:axesChaiKlles. myAxes) i%得到堂标轴控件句柄Bh str2 n um(gu (handles, dk

11、 * Siringr) > iWo str2num(g«< handks. zxpl rStiingf>) Wsl str2num<ge<(bandks. cd xxpl/String) iWsh Nslx2num( get ( handle9 zdsxpL 'String >) i Rp*Hs.tr2nvm( get (handles tdsj. Strang );Rs str2num(getric q > zd-j Strict/) i御用户输人的设计指标債Wp-Wo-B/2 Wo + B/2J *2* pii %求出通帯上下限疑

12、率 Ws-Wsl Wsh 2 pi* .孑求阻阻帝上下限疑率if (gec(handles radiobutton3/Value*) =» = «et(handles, ra- diobutton3/Max )%判断用户所设计的滤波器类中n.Wn=cheblord(Wpl>)%得到滤波舒的阶数和祓止频率匸三 thwbyltvuRp* 刊h* aJ) |乳得到涯适器的转穆酹賊和金护*分毋某敦WlinspateCl W«J 0(X)1* 2 « pi i%等廿横蚩标紬上点 H-fftos(btW)i茹求出*TH 第矗tnH = aU(H)i%求出幅值p

13、lot(W/42 pl) ilO * loglOCmagH) r b'>哭堆制出幡叢响应特性曲线 业辕率上人粥如注横坚标轴拆识艸蠡1福度"囲'打加注編樂标軸标駅山賦中比平天1型樓椰带通鴉逹嚣福義特性曲拔5%弹齊丙绘制的櫃诡曹的旳竽曲线需称lifict Wil t-RjiJmarkcrh J” '/ marktrcdgcroQr* +r r*(htrufk?r- siic'UG)W$1, -Rp,' cmrkc r' /, ' f * tna-rkcrtidgclur' i j* rnarkc r*F»!l

14、h<< Wsh»-Rp, merktr' .r markercdecplor' » r *' m*rk- er*izc 1C)kfi£< Wsh.-Rjt mark er >', / irLarkefcdsctnorP» r , mArk-«rsue* * IC)握标记岀特赚点st(faf XJ ickM&dr k Tnanupf t' XTkkr + D Wsl, Wth ,3 *WoJam C gm 71 YTick Mode1/ manual 1 YTirk 卜RwR

15、p. 0*11)1%绘般出伸蛭点的辄橫坐标对应榻祸线y|m<-130 &),di(0 Wo*3?»歸设足煖图范BGg rid £>nnWn = chrt2o-rd(Wp+Wjt-jRp,Rs* s )Lb,a3Jtchely2(TiTR.pPWn* s. )iWlin3|Hee(l»a * Wg,400) * 2 « puHfreqsCba.WjH>;phi<W/(2 * pi>.?q « 如山佃輻HWbSxhlHk M*<Hry>f yhUK切比書K 2型模撤帶通3S濃黠轉頑律性曲线J;lin

16、e< WsLRq. markf r' / mafkeiedffMolDT*.' r',' ma rker*ire' P10)linp<Wsl ,-Rp.;iTnrker,'”'/cparkrredgecolef /r rrurkfr-sikJO)line< WjliRp/ mnrkel /, t* rcxariiGrtdgtvulQr / r' / marlt- mi?/1 K>line Wah-p-Ru* mfiriter *1 . Tnarker'edfievDlflr * r - marlc-

17、 ersiEi * 1好)M«t( gca« XTirkModc' mBnutT / KTick WL W>h» J Wo1)*( gca.r YTick.Mode"t nunudJ YTiek'.-只氛-Rp* D iT>i繭rid on在“分析”菜单下“相频特性”子菜单用来绘制给定参数的滤波器的相频特性曲线。相频特性曲线的在程序设计过程与幅频特性曲线的程序设计比较相似,只是在求得幅值后加一相位计算函数angle来求相位角。在 plot函数中将纵坐标参数换为求出的相位角变量即可 完成相频特性曲线的绘制。对于“阶跃响应”回调函

18、数的程序设计,要将计算出的阶跃响应绘制在坐标轴控件界面上, 不能利用信号处理工具箱中step函数直接求得。因为若用该函数会使绘制出的阶跃响应曲 线在一个新打开的窗口上,而软件在界面设计时,所求滤波器的所有特性曲线都共用一个 坐标轴来绘制;在程序设计时利用 tf 函数将计算出的滤波器转移函数的分子、分母系数生 成转移函数,再利用阶跃响应函数 step 对求出的转移函数变量求解出阶跃响应值;最后利 用 plot 函数绘制出所求滤波器的阶跃响应曲线,这样即可完成阶跃响应曲线在坐标轴上的 绘制。“脉冲响应”回调函数的程序设计与“阶跃响应”回调函数的程序设计十分相近,只是将 上述程序中的阶跃响应函数 s

19、tep 换成脉冲响应函数 impluse ,并在对应的时间做相应的调 整即可完成脉冲响应回调函数的编写。“零极点图”回调函数的程序设计与以上两个子菜单的回调函数设计大致相同,程序的设 计结构与前面几个菜单的回调函数的设计基本一致。在求得转移函数的分子、分母系数后, 利用 tf2zp 函数求出所设计出的滤波器的零点、极点、增益,再用 real 函数和 imag 函数 求出零点、极点的实部和虚部,最后利用绘图函数 plot 绘制出系统的零极点图。4.2.2 “计算”菜单下各功能回调函数的编写“计算”菜单下包含了“阶数”、“零点”、“极点”、“增益”、“转移函数分子系 数”。其中,“转移函数分母系数

20、”菜单分别用来计算所设计的滤波器阶数、零点、极点、 增益、转移函数分子系数、转移函数分母系数;“阶数”菜单用来计算所输入参数滤波器 的阶数,并将它输出到输出参数框。在程序的设计中,首先判断用户所选择滤波器的类型, 然后将计算出的参数用 set 函数输出到输出文本区。因为极点、零点值可能为复数,而文 本编辑框的数据类型为数值型,所以在输出时,利用 num2str 函数将得到的值进行格式转 化,以防止出现复数值只能显示出实部来。“阶数”菜单程序如下:gttChflndks* dk/ String*4= r2num<AUundk £xpi/Sninfn iWfrH r2nmn(KCf

21、(h*Rdl«ta sdxplt SrrinK)>iW*htr£nuni(grt(handles, sclaxplt Siriu H)Rp = Mr?num<gerf hflndlrs. utsj *,SirinR,)(R 耳 p $ i r? numCfti (btinde>. id>j '5ir) >:乳魁到用戸埔人的迂忡JS标值Wp-Wo-B £ Wo+B/22* 2 * phWj.=CWfl| Wsli * 2* piiif (get( handles, r. citl.-j! t' / '."

22、;si:.-<'1 - = get(Mndtle iatltobuHunj , Xtak' > JLn, Wti = ehehlo-rdC Wp,Wa, RptRs.V)htG = ehaylg R|i + Wn/j* h W-Iinc*(1.3 * Wo.1000) * 2« H= freqs( t»a,U?p magH abs( H> f*$!«num drn)(.Z'P, = d2zpnum- d*n> i3亡v( hirEdles. ediisc* string ,*um2月Lrt rt> t啊将计算岀

23、的泄注霍阶输出e!Cn. Wn5-< chebZordC Wp, W»k Rp«ft»4 r/)t>Ch*by25rRp* Wn.D*Wlinpact<l * Woi 1000) * £ * pi ;H=freqs( b.a, W)(=<ibs( l Snumb i:住:'den= a;syp d< num )Z.P«K = H2zp( num.den.) tat< handles, ilsse* llring"«nuniSstif(nJJ iend“阶数”、“零点”、“极点”、“增益”、“转移函数分子系数”、“转移函数分母系 数”子菜单中回调函数的程序设计基本一样

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论