Matlab+GUI 在《数字信号处理》课程中的应用
收藏
打印
发给朋友
发布者:lunwenchina
热度0票 浏览319次
时间:2018年8月02日 13:56
摘要:利用 matlab 的图形处理功能,在数字信号处理实验中引入 GUI 界面编程思想,形象演示数字信号处理课程中出现的抽象的物理概念和问题,帮助学生理解课堂内容,大大改进课堂教学效果,提高课堂教学效率。
关键词:matlab;GUI;数字信号处理
中图分类号:TN911.72 文献标识码:A 文章编号:1673-1131(2015)10-0248-02《数字信号处理》课程是电子信息工程专业一门非常重要的专业必修课程。是一门理论性与实践性非常强的课程。课程中包含了较多并比较抽象的物理概念、物理过程。如何帮助同学利用基本分析方法理解和分析这些问题,是《数字信号处理》课程的主要任务。
目前国内多数高校在《数字信号处理》课程教学中都加入了基于 matlab 的软件仿真实验教学,目的是通过仿真实验达到加深学生对课堂内容的理解。但是仿真实验在实际教学中,却由于一部分同学对matlab编程掌握存在一定的难度,没有达到理想的教学效果。针对这一问题,我们利用 maltab 的 GUI[1]
界面编程方法,在实验教学中,让学生通过自己编程和演示,加深对抽象概念的理解。
1 基于 Matlab 的演示系统
《数字信号处理》课堂教学,我们经常需要针对大量的数据进行处理,这些数据的处理主要是通过大量数学公式变换来实现。而同学们对于繁琐的公式推导和计算存在一定程度的抗拒。Matlab 可以通过形象的图像和曲线对数据进行分析,利用图形将数据之间的连续进行展示。结合本校所采用的《数字信号处理》教材,在实验教学中利用 MATLAB+GUI 的方法进行实验教学。鼓励同学在 Matlab 编程实验中,引入 GUI 界面编程思想。下面以 IIR 数字滤波器的设计和分析为例,对 GUI+MATLAB 数字信号处理实验进行介绍。
2 IIR 数字滤波器设计原理
在《数字信号处理》信号处理课程中,数字滤波器的设计占有比较重要的地位。数字滤波器的设计质上根据给定的频率特性指标要求,设计一个能物理实现的系统函数。IIR 滤波器一般采用是递归型的网络结构,系统的输入信号与输出信号满足 N 阶差分方程[2]:
对应的系统传输函数为:
一般情况下,我们要设计 IIR 数字滤波器,实质是要确定传输函数中的分母系数和分子系数或者零极点增益 A,从而使设计的滤波器的频率特性能够满足给定的性能指标要求。
3 GUI 设计工具概述
其实 GUI 就是 matlab 中的 Visual Basic,是面向对象的编程,可以使matlab程序的终端用户,即使不懂得matlab也可以轻易操作该程序。GUI 设计工具的主要部分就是 GUI 设计面板。在该面板面板上部为用户提供了菜单和常用工具按钮[3],左边提供了多种如命令按钮、单选按钮、可编辑文本框、静态文本框、弹出式菜单等。我们这一部分设计同样引入到《数字信号处理》实验课程中,主要工作是让学生通过面板的设计,了解软件的部分功能。具体工作是:首先单击面板左边所需的控件, 然后在右边的图形界面编辑区选择一个恰当位置, 将选中的控件添加到所选的位置上,直到完成一个图形完整的图形界面的设计。在我们所设计的实验演示部分,除了图像界面的设计外, 还有相当的一部分是通过具体属性的设置来完成的。在 GUI 设计过程中,我们要注意下面几个常用又很重要的属性设置[3]。
3.1 对象的常规信息
(1)Enable 属性:表示此控件的使能状态,设置为 on,表示可选,为 off 时则表示不可选。
(2)Style:控件对象类型。
(3)Tag:控件表示(用户定义)。
(4)TooltipString 属性:提示信息显示。当鼠标指针位于此控件上时,显示提示信息。
(5)UserData:用户指定数据。
3.2 控件回调函数的执行
(1)BusyAction:处理回调函数的中断。有两种选项:即Cancel:取消中断事件,queue:排队(默认设置)。
(2)ButtonDownFcn 属性:按钮按下时的处理函数。
(3)CallBack 属性:是连接程序界面整个程序系统的实质性功能的纽带。该属性值应该为一个可以直接求值的字符串,在该对象被选中和改变时,系统将自动地对字符串进行求值。
(4)CreateFcn:在对象产生过程中执行的回调函数。
(5)DeleteFcn:删除对象过程中执行的回调函数。
(6)Interruptible属性:指定当前的回调函数在执行时是否允许中断,去执行其他的函数。
3.3 控件当前状态信息
(1)ListboxTop:在列表框中显示的最顶层的字符串的索引。
(2)Value:控件的当前值。
利用GUI面板设计制作一个实验操作界面是非常方便的, 我们通过 GUI 具体操作可以看到,要设计一个界面友好的仿真实验软件,总体上应完成以下三个步骤:
(1)GUI 界面设计。这部分主要是通过不同的文本框、按钮等许多工具的综合使用,设计出一个布局合理、界面友好的图形用户界面。再设计前需要同学们要清楚这个图形界面索要实现的实验的具体功能是什么,即在图形界面上的操作会产生什么样的实验结果。
(2)子界面回调函数的设计。参考实验的具体内容,根据设计思想分别编写各个控件对象的回调函数,从而实现控件相应的控制功能,可以直接通过图像界面上各个按钮控制数据的输入输出,并可以方便地修改相应的实验输入数据,直观的对结果数据及其图形进行读取和分析。
(3)主界面的回调函数设计。将主界面和各个子界面进行相互连接,即通过主界面能够快速进入任何一个子界面进行操作,从任意一个子界面可以直接返回主界面。
同学们应根据设计好的图形界面的功能,编写出各个不同的图形对象对应的函数代码。从而保证这个图形界面能够完成所预定的功能。
4 设计滤波器
在实际设计过程中,求解上述参数的数学计算量较大,而且比较抽象,下面利用 matlab 和 GUI 进行 IIR 滤波器的设计,设计如图 1 所示的操作界面。
图 1 IIR 滤波器的设计
如图输入参数,其中滤波器设计中,能够选择的示波器模型有巴特沃斯滤波器、切比雪夫Ⅰ、Ⅱ型滤波器;在Filter Type中选择滤波器类型,能够选择 Lowpass、Highpass、Bandpass、Bandstop四种类型;在下拉菜单中filter order 可以选择滤波器的阶数,目前支持选择 2-10 阶。
选择设计 IIR 低通滤波器,设滤波器的阻带截止频率Fs=1000Hz,通带截止频率 Fp1=100Hz,采样频率 Fs1=300Hz,通带衰减 Rp=3dB,阻带衰减 Rs=20dB,滤波器阶数 n=4,可以得到如图 2、3 所示的 IIR 滤波器。
5 课程演示软件在教学中的作用
通过将基于 Matla 和 GUI 图形界面的“数字信号处理”课程演示软件的设计和应用在教学实践中实行,可以发现这对理论教学起到了非常有益的辅助作用。
(1)为理论教学提供了一种很好的辅助演示工具,在课堂上利用形象的图形界面和演示程序,把课程中比较抽象的物理概念和物理过程具体化和直观化,在教师教学过程中,能够更加有效的把理论内容和课堂实验结合起来,取得了很好的课堂教学效果。
(2)“数字信号处理”课程实验多以Matlab编程实习,硬件设备的市场价格较高,将GUI编程思想融入到课程试验中,克服了缺少硬件实验设备的弊端。
(3)在课程实验中,鼓励学生开发更多的基于Matlab+GUI的实验演示,既提高了学生对课程内容的兴趣,同时也大大地提高学生的编程技能。
图 2 Butterworth 低通滤波器
图 3 ChebyshevⅠ低通滤波器
参考文献:
[1] 罗华飞.MATLAB GUI 设计学习手记[M].北京:北京航空航天大学出版社,2002
[2] 张小虹. 数字信号处理(第 2 版)[M].北京:机械工业出版社,2008
[3] 陈垚光,毛涛涛,王正林,等. 精通 Matlab GUI 设计[M].北京:电子工业出版社,2008