基于Matlab的滤波器分析界面设计
2009-08-13陈亮郝卫东乔建华
陈 亮 郝卫东 乔建华
摘 要:Matlab的GUIDE是专门用于图形用户界面(GUI)程序设计的快速开发环境。在此结合具体的软件图形界面设计实例,介绍利用GUIDE制作图形用户界面的基本方法。在利用GUIDE设计的滤波器分析界面中,用户不仅可以调入不同类型的滤波器,还可以对输入参数进行修改,对仿真结果给出图形和文字显示。总体界面友好,具有开放性,既可方便不同用户使用,也可不断完善和扩充其功能。
关键词:Matlab;图形用户界面;滤波器分析界面;数字信号处理
中图分类号:TP319文献标识码:B
文章编号:1004-373X(2009)10-039-03
Design of Filter Analysis Interface Based on Matlab
CHEN Liang1,HAO Weidong1,QIAO Jianhua2
(1.Mechano-eletronics Engineering College,Guilin University of Electronic Technology,Guilin,541004,China;
2.College of Electronic& Information Engineering,Taiyuan University of Science and Technology,Taiyuan,030024,China)
Abstract:GUIDE of Matlab is a quick development environment,which is specially used for GUI program design.Based on an idiographic design example,this paper introduces basic methods to generate GUI with GUIDE.In this example,by the interface designed with GUIDE,it can not only load different types of filter,but also modify input parameters,and give figure and text show of simulation result.This interface is friendly and open,and is very convenient for different user,to perfect and extend its function.
Keywords:Matlab;graphical user interfaces;interface of the filter analysis;digital signal processing
0 引 言
随着信息时代和数字世界的到来,信号处理已在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。在信号处理中起着重要的作用并已获得广泛应用的是滤波器。在设计滤波器时,通常采用Matlab来进行辅助设计和仿真。
Matlab是集数值计算、符号运算及图形处理等强大功能于一体的科学计算语言。作为强大的科学计算平台,它几乎能满足所有的计算要求。随着对仿真和程序设计通用性及可视化需求的日益增加,新版本的Matlab着重改善了图形用户界面(GUI)的制作,极大地满足了用户的要求。
在此以Matlab 7.1为设计平台,利用Matlab的图形用户界面开发环境(GUIDE)设计滤波器的分析界面。
1 设计的基本内容及特点
数字信号处理课程不仅是高等院校电类专业和信息类专业学生的必修课程,也是工科学生受益较多的一门课程。但是课程的许多理论都基于繁琐的数学理论和数学推导,特别是滤波器分析的内容,因其理论及设计抽象难懂,容易使学生感到乏味。这里设计的基于Matlab平台的滤波器分析界面,不仅可以简单方便地设计和分析各种滤波器,而且有助于提高学生学习的效率,帮助学生理解课堂所学理论。该系统的基本内容及特点如下:
(1) 具有数据输入、图形输出、数据修改和文件保存、打印等功能,系统内容丰富,结果直观易懂,便于分析;
(2) 通过选择和滤波器参数输入,可以显示输出基于Matlab设计出的多种FIR和I2R数字滤波器;
(3) 可以对FIR或I2R的滤波器进行幅频响应、单位脉冲响应、零极点分析和群延迟特性分析,并可打印输出分析结果;
(4) 界面可视性强,操作简单方便,且系统易于扩展新的分析内容及仿真。
2 GUI设计工具简介
GUIDE(Graphical User Interface Development Environment)是Matlab中一个专用于GUI程序设计的向导设计器,而GUI是由各种图形对象,如图形窗口、图轴、菜单、按钮、文本框等构建的用户界面,是人机交互的有效工具和方法,通过GUIDE可以很方便地设计出各种符合要求的图形用户界面。用户可以根据界面提示完成整个工程,却不必去了解工程内部是如何工作的。GUI设计既可以基本的Matlab程序设计为主,也可以鼠标为主利用GUIDE工具进行设计,也可综合以上两种方法进行设计。调用GUIDE的方法有两种,在Matlab主菜单中点击File菜单的New子菜单,选择GUI选项,或在Matlab命令窗口输入guide命令,即可打开一个可编辑的新窗口。在新窗口中有界面设计需要用到的工具,如属性编辑器(Properties Inspector)、控件布置编辑器(Alignment Objects)、菜单编辑器(Menu Editor)、对象浏览器(Object Browser)、网格标尺设置编辑器(Grid and Rulers)以及GUI应用属性设置编辑器(Guide Application Options)。利用这些工具就可设计出需要的图形操作界面。
3 系统总体设计步骤
在该系统的设计中,界面布局设计采用自顶向下的设计方法,即先设计引导界面和主界面,再设计各个子界面。界面设计完成后,只是一些静态的画面,而没有内涵,还不能用于实验操作,想要达到仿真分析的功能,还必须借助于函数调用。在设计中,各个回调函数的编写顺序则是采用自底向上的设计方法,即先编制各个子界面中回调函数,再编写主界面和引导界面的回调函数。
其设计的具体操作步骤如下:
(1) 使用Matlab图形用户界面开发环境(GUIDE)提供了一系列创建用户图形界面(GUI)的工具,设计整个界面的开始引导界面、主界面和具体各个子界面。
(2) 分别编写各个子界面的各个控件对象的回调函数,以实现控件相应的控制功能,达到直接通过界面上各个控件就可以控制数据的输入输出,并可以方便地达到对结果数据及其图形进行读取和分析的目的。
(3) 编写主界面的回调函数,将各个子界面整合在主界面中,即通过主界面就可以进入任何一个子界面进行操作。
(4) 编写开始引导界面的回调函数,实现从引导界面直接进入主界面。
4 滤波器分析界面的设计及实现
4.1 滤波器分析界面系统的设计
该系统的整体结构设计由两部分组成:引导界面的设计和主界面的设计。系统的整体结构框图见图1。
引导界面包括了此次设计的标题、欢迎图形、进入下一个界面的按钮(WELCOM)及退出按钮(CLOSE)。在初始引导界面中,当用户单击命令按钮时,会产生相应的动作,例如当按下WELCOM键时,会自动执行命令并跳转到滤波器分析系统的主界面。
在滤波器分析系统的主界面中,总共包含4个模块,主显示模块、菜单模块、滤波器设计模块和滤波器分析模块。其中,主显示模块负责显示选中的滤波器设计和分析的结果;菜单模块中除了一般系统均使用的菜单外,还增加了几个控制背景和退出系统等特色菜单,以方便用户使用;滤波器设计和分析模块中,分为若干个子界面,分别调用已编写的函数来实现设计和分析功能。
4.2 滤波器分析界面系统的实现
设计出的主界面是用来进入各个子界面的。系统使用菜单及其一些按钮控件是用来实现各个子界面的有机联系,界面美观大方,易于操作。在主界面中有4个菜单分类,分别是System系统、Analysis分析、Tool工具以及Help帮助。
(1) 系统(System):System中包含了两大项:I2R System和FIR System。这两个子系统中又包含许多子项,涵盖了比较常用的典型滤波器,如图2所示。
在 I2R System和 FIR System这两个子系统中,又分别分为数字滤波器(Digital Filter)与模拟滤波器(Analog Filter)两个子项,而在这两个子项下都同样包含着Low Pass(低通)、High Pass(高通)、Band Pass(带通)、Band Stop(带阻)滤波器(Filter),另外在FIR system 中还加入对窗函数的分析比较。
在设计I2R模拟滤波器的时候,设计者可以自行输入模拟高通、带通、带阻滤波器的参数(阶次和通带波纹系数),并对输入不同参数的滤波器进行清晰的比较设计。例如,在设计I2R模拟带阻滤波器时,对阶次为2阶和9阶,通带波纹同为10 dB的两个滤波器进行设计,只需按要求输入不同的参数,即能进行方便快捷的比较设计,并且还能不断地按提示要求输入参数增加滤波器设计比较,如图3所示。
(2) 分析(Analysis):在Analysis菜单中,对各种常用的典型滤波器进行了分析比较。下面仅以两种类型的低通滤波器比较分析为例,说明该系统分析功能的实现,即从I2R滤波器和FIR滤波器中各选出一种低通滤波器进行比较分析。I2R 滤波器和FIR滤波器各有所长,I2R 滤波器设计简单,但是往往脱离不了模拟滤波器的格局;FIR滤波器虽然设计灵活,但是阶次较高,信号延迟大,所以要对其进行比较。在实际应用中,选择滤波器型号时,应该从多方面加以考虑。
进行I2R和FIR两类低通滤波器的比较分析时,首先选择Analysis菜单下I2R Analyze(I2R滤波器分析)中的双线性z变换设计数字低通滤波器进行分析,然后再选中菜单下FIR Analyze(FIR 滤波器分析)中的针对切比雪夫逼近法设计数字低通滤波器进行分析。两类低通滤波器的比较,主要分析I2R/FIR数字低通滤波器的幅频响应;I2R/FIR 数字低通滤波器的单位脉冲响应h(n),I2R/FIR数字低通滤波器的群延迟特性;I2R/FIR数字低通滤波器的零极点分析等四项内容,如图4所示。
由图4可以得出,I2R滤波器系统函数的极点可以位于单位圆的任何位置,因此在相同设计指标下(与FIR滤波器相比),实现I2R滤波器的阶次低,经济效率高,但它以相位非线性为代价。相反,FIR却得到严格的线性相位,但FIR滤波器系统的极点固定在原点,所以必须使用较高阶次的滤波器实现相同的技术指标(与I2R滤波器相比),通常阶次要高5~10倍,致使成本较高,也造成较大的信号延迟。
(3) 工具(Tool):此项包含一个子项升级(Live Update),当计算机未联网时,就会弹出一个网络未连接的错误信息显示对话框。
(4) 帮助(Help):此项包含两个子项Help和About。当选择Help选项时,会执行程序调用并显示帮助的内容;当选择About选项时,会显示该图形用户界面的版本号及设计时间等相关信息。
5 结 语
在Matlab 7.1版本的基础上,利用GUIDE设计完成的这个滤波器分析界面,不管是对初学者还是对研究分析者,都可以更加清晰地认识各种滤波器,并加以直观形象地分析和选择。作为一个通用的学习分析程序,可以供不同的设计、学习人员使用,可根据图形界面的参数提示修改输入相应的参数,就可以方便地显示并得出分析结论。该设计系统可以应用到数字信号处理的实验教学之中,能够激发学生学习的兴趣,达到提高教学质量的目的。
参考文献
[1]火元莲,齐永锋,刘亚丽,等.基于Matlab的数字滤波器的设计与应用研究[J].现代电子技术,2007,30(23):166-170.
[2]王磊,张婉.基于Matlab的数字滤波器交互界面设计[J].电子质量,2008(5):32-35.
[3]李腾飞,张辉.基于LabWindows_CVI和Matlab的滤波器设计[J].电子科技,2007(3):29-31.
[4]程明,李裕能,王翔.基于Matlab的数字滤波器分析[J].通信电源技术,2006,23(1):25-27.
[5]张晶,李心广.Matlab在通信原理教学中的应用[J].中国现代教育装备,2007(2):21-23.
[6]丁玉美,高西全.数字信号处理[M].西安:西安电子科技大学出版社,2004.
[7]薛年喜.Matlab在数字信号处理中的应用[M].北京:清华大学出版社,2003.
[8]楼顺天,刘小东,李博菡.基于Matlab 7.x的系统分析与设计——信号处理[M].西安:西安电子科技大学出版社,2005.
[9]王家文,王皓,刘海.Matlab 7.0编程基础[M].北京:机械工业出版社,2005.
[10]飞思科技产品研发中心.Matlab 7辅助信号处理技术与应用[M].北京:电子工业出版社,2005.