毕业设计(论文)基于图形交互式的信号处理CAI软件的设计开发.doc
目 录中文摘要I英文摘要II1 绪论11.1 问题提出及研究意义11.2 设计的基本内容12 系统设计工具简介22.1 MATLAB概述22.2 图形用户界面(GUI)设计32.2.1 创建GUI的步骤32.2.2 GUI编程72.2.3 GUI的设计流程和设计原则72.2.4 控件的使用83 系统总体设计思路103.1 系统总体设计的步骤103.2 系统总体设计的结构104 系统图形用户界面设计124.1 图形用户界面外观设计124.1.1 控件对象124.1.2 控件属性的设置134.1.3 窗口属性的设置134.1.4 菜单的设计154.2 图形用户界面控件编程154.2.1 输入函数154.2.2 输出函数164.2.3 回调函数175 系统用户界面的实现175.1 引导模块175.1.1 回调函数的编写175.1.2 界面功能185.2系统说明模块185.3 主界面模块195.3.1 回调函数的编写195.3.2 界面功能205.4 基本信号的产生模块205.4.1 回调函数编写的基本原理205.4.2 界面功能225.4.3 界面使用演示235.5 序列基本计算模块255.5.1 回调函数编写的基本原理255.5.2 界面功能265.5.3 界面使用演示265.6 数据采集模块275.6.1 回调函数编写的基本原理275.6.2 界面功能285.6.3 界面使用演示285.7 卷积模块295.7.1 回调函数编写的基本原理295.7.2 界面功能305.7.3 界面使用演示305.8 傅里叶变换模块325.8.1 回调函数编写的基本原理325.8.2 界面功能335.8.3 界面使用演示335.9 Z变换模块355.9.1 回调函数编写的基本原理355.9.2 界面功能365.9.3 界面使用演示375.10 滤波器设计模块405.10.1 回调函数编写的基本原理405.10.2 界面功能425.10.3 界面使用演示43结束语49致 谢50参考文献51附 录51基于图形交互式的信号处理CAI软件的设计开发摘要信号与系统是电子信息工程专业的一门基础课程,由于它内容繁多、概念抽象、设计复杂等,使得学生在学习时常常感到厌烦,难以理解和掌握。为了使学生们打好专业课基础,提高学习兴趣,特用MATLAB设计了一个信号处理的实验软件。该实验软件共有16个实验,各个实验都可以在实验界面中通过输入相应的参数,观察到实验结果和图形,以便于学生们通过实验加深对课程中概念和原理的理解。MATLAB是一种交互式、面向对象的程序设计语言,其结构完整、具有优良的移植性。更重要的是它在数字信号处理方面具有强大的功能。因此本设计采用MATLAB的图形用户界面设计功能,设计各个实验界面。本实验软件在MATLAB7.1环境下可以成功运行,只需将系统默认路径改为此实验软件的所在路径即可。本实验系统可以完成基本信号的产生、卷积、傅里叶变换、Z变换、滤波器的设计等实验。关键字 交互式/图形用户界面/信号处理BASED ON GRAPH INTERACTIVE SIGNAL PROCESSING CAI SOFTWARE DESIGN DEVELOPMENTABSTRACTSignal and system is a basic curriculum in the Electric Information specialty. Because the various content, abstract concept, complex design and so on. The students frequently feel dull with difficulty understanding and grasping. In order to make the students have a good basic and enhance the study interest of students, put forward developing an experimental software based on Signal Processing. The Signal Processing software includes six-teen experiments, each experiment can be completed in the experimental interface, enter the corresponding experimental parameter, then can obtain the output of corresponding graph and data, which can make the students have better understanding in concept and principle.MATLAB is an interactive mode and object language. It has complete construction and transplant well. especially it have strong power in the Digital Signal Processing. So the design adopts the design function of the graphic user interface in MATLAB to design each experiment. The experimental system runs successfully under the MATLAB7.1 environment, only need to alter the acquiescing in path to the path of the Signal Processing software. The experimental system can complete the experiments of Basic Signal Generation, Convolution, Fourier Transformation, Z Transformation, Filter Design and so on.KEY WORDS Interactive Mode ,Graphic User Interface ,Signal Processing 1 绪论1.1 问题提出及研究意义随着计算机技术和信息科学的飞速发展,数字信号处理已经发展成为一门独立的学科并成为信息科学的重要组成部分,在语音处理、图像处理、雷达、航空航天、地质勘探、通信、生物医学工程等众多领域得到广泛的应用。信号处理类课程主要介绍离散信号与离散系统分析的基本理论,包括离散傅里叶变换、数字滤波器的设计、数字信号处理的实现等内容。通过本课程的学习,要求学生掌握信号处理的基本理论、基本方法和基本技能,为后继学习和应用信号处理技术奠定基础。众所周知MATLAB的信号处理工具箱(Signal Processing Toolbox)覆盖了经典信号处理理论的大多数内容,是一个非常优秀的算法研究和辅助设计工具。但是依靠MATLAB工具箱仍然不能直接地完成对信号的分析处理,它需要经过一系列的程序编写后方能进行。所以使用者必须有一定的理论基础和实践经验,但并非所有使用者都学习过MATLAB。为了使那些未学过MATLAB的学生同样能方便地进行信号的分析与处理,也为了对信号的分析与处理更加方便快捷、更加高效实用,设计了基于MATLAB的信号处理实验系统。将MATLAB的数字信号处理工具箱、图形用户界面(GUI)设计和数字信号处理的基础知识有机地结合起来,在简要阐明函数原理和算法的基础上,给出了详细的函数使用说明,再通过具体的实验实例,进一步加深了学生对信号处理理论原理的理解,适合于学生对知识的学习和掌握。1.2 设计的基本内容本设计为基于信号处理的实验软件系统的开发,是利用MATLAB的可视化图形用户界面(GUI)工具和信号处理知识,设计实验系统的图形用户界面的总体结构,能够用于完成相关的信号处理实验。本设计主要完成以下功能:(1)信号处理实验系统能够完成以下信号处理实验:序列的基本计算、基本信号的产生、数据采集、卷积、傅里叶变换、Z变换以及FIR和IIR滤波器的设计。 (2) 具有数据输入输出、图形输出、数据修改和文件保存、打印等功能。(3) 界面可视性强,操作简单方便,结果直观易懂、便于分析。(4) 系统易于扩展新的实验,以不断丰富信号处理系统的内容。2 系统设计工具简介2.1 MATLAB概述 MATLAB是一种高效的工程计算言语,它将计算、可视化和编程等功能集于一个易于使用的环境。在MATLAB环境中描述问题及编制求解问题的程序时,用户可以按照符合人们科学思维的方式和数学表达习惯的语言形式来书写程序。其典型应用主要包括以下几个方面:l 数学计算;l 算法开发;l 数据采集;l 系统建模和仿真;l 数据分析和可视化;l 科学和工程绘图;l 应用软件开发(包括用户界面)。MATLAB是一个交互式系统(写程序与执行命令同步),其基本的数据元素是没有维数限制的阵列。这使得用户可以解决很多工程技术上的问题,特别是那些包含了矩阵和向量的公式的计算。采用MATLAB编制解决上述问题的程序比用采用只支持标量和非交互式的编程语言(C语言和Fortan语言)更加方便。MATLAB的一个重要特色就是它有一套程序扩展系统和一组称之为工具箱(Toolboxes)的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。MATLAB系统由以下5个主要部分组成,下面具体进行介绍。开发环境:由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中的许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于浏览帮助、工作空间、文件的浏览器。MATLAB数学函数库:这是一个包含大量计算算法的集合,这些函数包括从最简单最基本的函数(如加法、正弦等)到诸如矩阵的特征向量、快速傅里叶变换等复杂的函数。MATLAB语言:这是一个高级的矩阵/阵列语言,它包括控制语句、函数、数据结构、输入输出和面向对象的编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起进行。图形处理:用MATLAB可以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维数据可视化、图像处理、动画和表达式作图,低层次的作图包括定制图形的显示和为用户的MATLAB应用程序建立的图形用户界面。MATLAB应用程序接口(API):这是一个库,它允许用户编写可以和MATLAB进行交互的C或Fortan语言程序。2.2 图形用户界面(GUI)设计GUI是实现人机交互的中介,可以通过它实现数据输入、处理和输出。MATLAB提供了一个专门的GUI设计工具GUIDE。使用该工具,可以快速完成GUI设计任务。2.2.1 创建GUI的步骤MATLAB图形用户界面开发环境(GUIDE)提供了一系列创建图形用户界面(GUI)的工具。这些工具极大地简化了GUI设计和生成的过程。可以用GUIDE完成下面的任务。(1) 输出GUI;(2) 使用GUIDE输出编辑器,可以通过单击和拖拉GUI控件很容易地创建GUI;(3) GUI编程;(4) GUIDE自动生成一个控制GUI如何操作的M文件。该文件初始化GUI并包含一个所有GUI回调(用户单击GUI控件时执行的命令)的框架。使用M文件编辑器,可以向回调中添加代码,运行相关函数。2.2.1.1 启动GUIDE在命令窗口中键入guide或通过文件新建GUI,启动GUIDE显示如图2-1所示图2-1 “GUIDE Quick Start”对话框打开“GUIDE Quick Start”对话框,利用GUIDE模板创建新的GUI,或者打开已经存在的GUI。在本设计中选择Blank GUI(Default)后,单击“OK”按钮,在输出编辑器中打开GUI。2.2.1.2 输出编辑器在GUIDE中打开GUI以后,它显示在输出编辑器中。它是所有GUIDE工具的控制面板。图2-2显示了空白GUI模板的输出编辑器。图2-2 输出编辑器可以通过拖拉控件输出GUI,这些控件位于输出编辑器左侧的工具箱中,有按钮、弹出式菜单和坐标轴等多种。例如把一个按钮和一个坐标轴拖拉到输出区域,效果如图2-3所示。双击此控件可以设置其基本属性。图2-3 在输出编辑器中拖放控件2.2.1.3 菜单编辑器菜单系统的设置可以通过菜单编辑器来完成。选择GUIDE的Tools菜单中的Menu Editor选项或单击工具条中的按钮。该菜单编辑器如图2-4所示。图2-4 菜单编辑器在菜单编辑器中:图标是新建菜单,是新建子菜单;和用来将菜单向左移和右移;和是将菜单项上移和下移;是删除菜单项。 “Label”栏用来填写菜单项的名称,如果在前面加“&”符号则加快捷键,当运行时第一个字母会加下划线,以方便用户快速激活菜单项;“Tag”是标记;“Separator above the item”是分隔符;“Check mark this item”是初值是否已选;“Enable this item”是此项有效;“Callback”栏用于输入回调函数。回调函数是字符串,可以包含任何MATLAB的合法指令和M文件名,回调的作用是将字符串用“eval”执行,以实现菜单的功能。2.2.1.4 运行GUI从“Tools”菜单选择“Run”选项或单击按钮,运行GUI。这时将生成两个文件.m文件和.fig文件,在输出编辑器外显示功能GUI。效果如图2-5所示。图2-5 GUI界面(.fig文件)2.2.1.5 GUI的FIG文件和M文件GUIDE把GUI保存在两个文件中,它们在第一次保存或运行时生成。一个是FIG文件,扩展名为.fig,它包含对GUI和GUI控件的完整描述;另一个是M文件,扩展名为.m,它包含控制GUI的代码,包括其控件的回调。这两个文件与GUI显示和编程任务相对应。在界面编辑器中创建GUI时,内容保存在M文件中;对GUI编程时,内容保存在M文件中。设计好GUI以后,可以用M文件编辑器编写GUI的M文件。GUIDE会在第一次保存或运行GUI时生成这个文件。这个GUI的M文件会初始化GUI,并在GUI显示屏幕上显示以前包含的代码来完成任务。初始情况下,每个回调都只包含一个函数定义行,然后用M文件编辑器添加代码来完成函数的编写。单击输出编辑器工具条上的图标打开M文件。图2-6显示了GUI界面.m文件。图2-6 GUI界面(.m文件)2.2.2 GUI编程在输出编辑器中GUI的属性设置以后,下一步工作就是编程。其主要内容包括:(1) 创建GUI的M文件;(2) 打开GUI的M文件;(3) 在回调间共享数据;通过将数据保存到MATLAB handles结构中,可以实现回调间的数据共享。GUI中的所有控件使用同一个handles结构。它会传递一个输入变量给GUIDE生成的所有回调函数。可以在任何回调函数中获取handles结构中的数据,因为hObject和handles是GUIDE生成的所有回调函数的输入变量。(4) 在初始化函数中添加代码;(5) 在回调函数中添加代码; 这些回调函数有的是针对窗口而言的,还有的是针对具体控件而言的,学会了回调函数的编写将有助于高效编写MATLAB图形用户界面程序2.2.3 GUI的设计流程和设计原则2.2.3.1 GUI的设计流程GUI开发设计的一般流程图如图2-7所示:开 始任务定义草图设计设计检测编写代码代码检测结束图2-7 开发设计流程图从图中可以看出,整个开发过程分为两部分:设计阶段和实现阶段。创造性的劳动是在设计阶段进行的,开发文档便是对这些思想的记录,因此,设计者不要忽视设计阶段。另外,开发流程不是单向进行的,有时有一个反复的过程。后面会遇到一些无法解决的问题,因此需要对前面做局部调整。这种反复过程是正常开发无法避免的。严格按照上述流程进行开发带来的一个好处是,开发者能够从整体上把握设计,制定出合适的策略来解决问题。2.2.3.2 GUI设计的原则由于要求不同,设计出来的界面也是千差万别的。但是,自从人们开始设计图形界面以来,界面设计的评判标准并没有太大的变化。简单地说,一个好的界面应遵循的标准可以用九个字来概括:简洁性、一致性、熟悉性。简洁性意味着界面简单明了,直接清晰。用户可以很快提取对自己有用的信息。一致性意味着设计系统的各个环节应遵从统一的、简单的规则,保证不出现例外的情况。熟悉性意味着系统设计时尽量保持与该类流行界面相似,比如VC的对话框风格,视图的风格、MATLAB的Figure风格。这样用户操作起来就容易上手,误操作率比较低。以上三点,就是要求在设计整个过程中贯穿以人为本的设计理念,设计者应该经常考虑以下两个问题:一是用户在没有熟悉界面之前,完成一个操作需要多长时间?二是用户在熟悉界面后,完成一个普通操作需要多长的时间?总之,便于用户操作是最重要的。2.2.4 控件的使用除了菜单外,控件也是很重要的界面组成部分,常用的控件包括命令按钮、单选按钮、开关按钮、复选框、文本框、静态文本、滚动条、框架、列表框、弹出式菜单和坐标轴。各控件的具体功能如表2-8所示。表2-8控件的功能控件名Property Name功能命令按钮PushButton最常用的控件,用于相应用户的鼠标单击,按钮上有说明文字说明其作用开关按钮ToggleButton当单击时会凹凸状态切换单选按钮RodioButton当单击时会用黑白点切换,总是成组出现,多个单选按钮互斥,一组中只有一个被选中复选框CheckBox当单击时会用“”切换,有选中、不选中和不确定等状态,总是成组出现,多个复选框可同时选用文本框EditText可任意输入和编辑单行和多行文字,并显示出来静态文本StaticText用于显示文字信息,但不接受输入滚动条Slider可以用图示的方式显示在一个范围内数值的大概值范围,用户可以移动滚动条改变数值框架Frame将一组控件围在框架中,用于装饰界面列表框ListBox显示下拉文字列表,用户可以从列表中选择一项或多项弹出式菜单Pop-up menu相当于文本框和列表框的组合,用户可以从下拉列表中选择坐标轴Axes用于绘制坐标轴创建控件以后,需要对控件的属性进行设置,以达到设计所需的功能。大部分控件都有以下属性:sting属性:用于显示在控件上的字符串,起说明或提示作用。Callback属性:回调函数,和菜单的一样。enable属性:表示该控件有效,如果“on”则表示有效,如果“off”则表示无效。tooltipstring属性:当鼠标放在控件上时显示提示信息,为字符串。字体属性:包括fontname,fontsize等。Tag属性:控件的标记,用于识别控件。3 系统总体设计思路3.1 系统总体设计的步骤在本系统的设计中,界面布局设计采用自底向上的设计方法,即先设计各个实验子界面再设计主界面,最后设计引导界面。各个回调函数的编写顺序也是采用自底向上的设计方法,即先编制各个实验子界面的回调函数,再编写主界面和引导界面的回调函数,其设计的具体步骤如下:(1) 运用MATLAB的图形用户界面(GUI)设计方法,设计整个实验系统的开始引导界面、实验主界面及其实现信号处理课程中具体实验的各个子界面; (2) 分别编写各个子界面的各个控件对象的回调函数,来实现控件相应控制功能,达到直接通过界面上各个控件就可以控制数据的输入输出,并可以方便的对实验结果的数据及其图形读取和分析;(3) 编写主界面的回调函数,将各个实验子界面整合在信号处理系统实验主界面中,即通过主界面就可以进入任何一个实验子界面进行实验;(4) 编写开始引导界面的回调函数,实现从引导界面直接进入主界面进行实验,从而形成一个完整的实验系统。3.2 系统总体设计的结构本实验系统总共包括十个模块:引导模块、主模块、简介模块、基本信号的产生模块、序列基本计算模块、数据采集模块、卷积模块、傅里叶变换模块、Z变换模块、滤波器设计模块。有些实验界面模块下面又有下一级实验界面模块,如基本信号的产生模块下有基本离散信号的产生界面和基本连续信号的产生界面;卷积模块下有离散信号的卷积界面和连续信号的卷积界面;傅里叶变换模块下有基本序列的傅里叶变换界面和有限序列的傅里叶变换界面;Z变换模块下有有限长序列的Z变换模块和Z变换的应用模块,其中有限长序列的Z变换模块下有序列的Z变换界面和序列的逆Z变换界面,Z变换的应用模块下有解差分方程界面和系统函数及输入求输出界面;滤波器设计模块下面还有FIR滤波器设计模块和IIR滤波器设计模块,其中FIR滤波器模块又包含FIR滤波器线性的判断实验界面、窗函数的频率响应实验界面和FIR滤波器的设计实验界面,IIR滤波器模块又包含完全IIR滤波器的设计实验界面和典型IIR滤波器实验界面。系统的总体设计结构图,如图3-1所示。引导界面主界面基本信号的产生序列的基本运算数据采集卷积傅里叶变换Z变换滤波器的设计FIR滤波器的设计IIR滤波器的设计典型滤波器的设计完全滤波器的设计窗函数的频率响应FIR滤波器的设计FIR滤波器线性的判断有限长序列的Z变换Z变换的应用序列的Z变换序列的逆Z变换求解差分方程系统函数和输入求输出基本序列的傅里叶变换有限序列的傅里叶变换连续信号的卷积离散信号的卷积基本连续信号的产生基本离散信号的产生图3-1 系统的总体设计结构图4 系统图形用户界面设计本实验软件系统的设计是在MATLAB 7.1环境下进行的,利用MATLAB的图形用户界面设计工具GUI来进行整个系统的设计。对于基于MATLAB图形用户界面的设计,它的设计过程非常类似于VB的编程过程,本实验系统的设计工程可以分为以下两个部分:(1) 图形用户界面外观设计:主要是通过对话框、按钮、文本框等许多工具的使用,设计出一个图形用户界面,同时也应清楚这个图形界面的功能是什么,即在图形界面上的操作会引起什么样的响应。(2) 图形用户控件编程:用户将根据在外观设计阶段所确定的图形界面的功能,针对各个不同的图形对象,来编写能够实现该功能的回调函数及进行相应的属性设置,确保这个图形界面能够完成所希望的功能.4.1 图形用户界面外观设计在MATLAB命令窗口中输入guide,或在Matlab主菜单中点击File菜单中的New选项,选择其中的GUI命令,就可以显示图形用户界面的设计模板。总共有四个模板,本实验系统的设计中使用默认模板(Blank GUI)。选定设计模版后,单击OK,即进入GUI界面设计环境。4.1.1 控件对象本设计中用到的控件对象有以下几个:静态文本框(Static text)、可编辑文本框(Editable text)、框架(Frame)、列表框(List box)、弹出式菜单(Pop-up menu)、命令按钮(Push button)几种。需要哪个控件就在相应的控件单击鼠标左键,然后再设计窗口中需要放置的位置单击鼠标左键,即可完成放置。下面分别介绍各个控件在本实验系统设计中的具体用途。·静态文本框用来静态显示文本字符串,在本设计中用于显示其它控件的说明信息,用来帮助说明其它控件的用途等,还有用作显示数据输出。·可编辑文本框用于进行数据的输入及输出,可进行单行或多行输入及输出,并且可以对数据进行修改。·列表框用于用户从中选择相应的实验选项进行实验,当选项比较多时,本设计采用了列表框,只要单击其中一个选项,就可以执行相应的操作并得出相应的结果。·弹出式菜单用于用户从中选择互相不同的实验选项进行实验,当用户选中其中的一个表项并单击时,该表项就会出现在信息显示框中,就可以执行相应的操作并得出相应的结果。·命令按钮当界面执行的功能比较单一时,直接采用命令按钮,只有单击该按钮,就可以执行相应的操作并得出相应的结果。·框架为了让用户界面看起来层次分明,容易被用户理解,把作用相关的一组控件用框架框起来。·坐标轴用于实验结果图形的输出显示。本实验系统设计中,放置好的所有界面基本布局,是输入位于窗口的右上方,输出位于窗口的右下方,图形的输出位于窗口的左边。4.1.2 控件属性的设置本实验系统设计中的主要修改以下几种控件的属性:· BackgroundColor 设置控件的背景颜色;· FrontName 设置控件的字体;· FrontSize 设置控件的字体大小;· FroegroundColor 设置控件的字体颜色;· String 设置控件上显示的文本串;· Tag 标记控件的名字,在进行程序设计时,可以利用该名字来指定控件;· Units 设置控件的大小,控件与图形窗口的距离等单位;· Callback 定义控件对象的控制动作,设计时设它为%automatic,来使系统自动产生回调函数,以便函数的编写;·Max与Min 在可编辑文本框中,设置Max-Min>1,从而可编辑文本框可以进行多行输入输出;在列表框中设置Max-Min<=1,列表框只允许进行单个列表选项的选择;4.1.3 窗口属性的设置双击设计窗口,打开窗口的属性对话框。本设计只对窗口的以下几个属性进行改变,其它属性值均采用默认值。·Color属性该属性是用于设置界面窗口的背景颜色,采用RGB(红,绿、蓝)配色原理。整个实验系统中,界面的背景色设置为0.0,0.502,1.0,为蓝色系列·MenuBar属性 该属性是用于设置图形窗口菜单条形式。当设置为none时,无菜单条,此时可采用Menu Editor加入自己的菜单;当设置为figure时,则有系统约定的菜单条,如图4-1所示。本设计系统中,引导界面、主界面和说明界面中,此项均设置为none,其它实验子界面此项设为figure。图4-1 系统约定的菜单条·Name属性该属于是用于设置图形窗口标题栏上的显示名称。在引导界面中设为“欢迎使用信号处理实验系统”,在主界面中设为“实验系统主界面”,其它实验子界面设为具体的实验名称,通过设置此属性,使整个系统各部分更加分明,更方便用户使用。·Position属性该属性是用于设置图形窗口的位置和大小,本设计中只设置其大小。离散信号的卷积和典型IIR滤波器的“width”设为0.57,“height”设为0.68,其它界面的“width”设为0.438,“height”设为0.547。通过设置此属性,使各个窗口打开时的大小基本一致。·Resize属性该属性决定是否可以用鼠标来改变窗口的大小,本实验系统设计中所有子界面都设为on,即允许改变窗口的大小,以满足用户的不同习惯。在引导界面、主界面和说明界面中,此项均设置为off。·Units属性该属性是用于设置图形窗口的坐标单位。约定为像素点pixels为像素点;inches为英寸;centimeters为厘米;normalised为01之间的小数。本实验系统设计中所有界面均设置为normalised。4.1.4 菜单的设计本实验系统设计时,在实验子界面中除使用系统约定的菜单条外,还增加了几个控制背景和退出实验的菜单;引导界面中不使用菜单;主界面中将所有实验项目做成菜单的形式,只要通过选择相应的菜单选项,就可以进入实验。本设计过程中直接使用了Menu Editor来设计菜单,具体设计方法在介绍菜单编辑器时已经详细介绍过,在本设计中菜单的功能如下。(1) 使用系统约定的菜单条,在该菜单条中可实现文件的打印保存等功能。(2) 自制的菜单,在子界面中包括Clear、Option、Exit三个菜单,其中Clear下有Cleal Figure和Clear Input和Clear Output三个子菜单,用于清除输入、输出框中的数据和输出图形;Option下有Grid on 和Grid off两个选项,分别用于给图形加上栅格和去除栅格;Exit用于退出实验子界面。在实验系统主界面中创建的菜单项如图4-2所示。图4-2 主界面的菜单在实验系统子界面中创建的菜单项都是相同的,如图4-3所示的“基本连续信号的产生”界面的菜单项图4-3 子界面的菜单4.2 图形用户界面控件编程图形用户界面的实现任务之一就是控制这些控件如何响应用户的行为。当界面外观设计完后,则要赋于各菜单及工具控件以灵魂,这就需要编写程序来实现特定的功能。编程时将各个控件之间以及控件自身的选项联系起来,主要用到get、set、eval、axes函数,下面分别对其进行介绍。4.2.1 输入函数get函数的应用 get函数是用于获得图形对象的属性。(1) 语法:该函数有如下几种表达形式·get(H) 获取H句柄对象所有属性的当前值·get(H, 'PropertyName') 获取H的句柄对象的属性值,由PropertyName所指定属性的当前值。(2) 举例:如果在界面的可编辑文本框(句柄为handles.input)中输入2*3.14*5,则执行get(handles.input,'string'),即获取可编辑文本框输入的表达式2*3.14*5。eval函数的应用eval函数是用于执行一个包含表达式的字符串。(1) 语法:该函数有如下几种表达形式·eval(expression) 将执行指定的表达式,用户可以使用方括号连接子串和变量来构造新的表达式:expression=string1,int2str(var),string2,·a1,a2,a3,=eval(expression) 执行指定的表达式并将结果返回到指定的输出变量中。·eval(expression,catch_expr) 执行指定的表达式,当检测到错误时,将执行“catch_expr”。(2) 举例:如果在界面的可编辑文本框的句柄为handles.output,则执行set(handles.output, 'string', mat2str(yk,2),可在可编辑文本框中输出相应的字符串由mat2str(yk,2)转化来的字符串(mat2str(yk,2)是将矩阵yk转化为字符串)。在程序设计中这两种函数常常嵌套使用,如:x1=eval(get(handles.signal_x1,string);可把signal_x1的值赋给x1。4.2.2 输出函数set函数的应用set函数是用于设置或修改图形对象的属性。(1) 语法:该函数有如下几种表达形式·set(H) 显示H句柄对象的所有可设置属性名和全部供选属性值。·set(H , 'PropertyName') 显示H句柄对象PropertyName指定属性名的全部供选属性值。·set(H , 'PropertyName', 'PropertyValue') 设置H句柄对象的PropertyName属性名的PropertyValue属性值。(2) 举例:若可编辑文本框的句柄为handles.onput,则执行set(handles.onput,'string', '2*3.14*5'),即可在可编辑文本框中输出表达式2*3.14*5。axes函数的应用axes函数是用于指定特定的坐标系,用来输出图形。(1) 语法:axes(H) 指定在H句柄对象上绘图(2) 举例:axes(axes1);stem(n,x);title('矩形序列');xlabel(n);ylabel('xn');即在axes1句柄对象上绘制脉冲图形,标题为矩形序列,横坐标的标号为n,纵坐标的标号为xn。 4.2.3 回调函数回调函数是用户界面的核心,在用户界面中用于完成界面的功能,在本设计中涉及到的回调函数的编写实现功能的有命令按钮、下拉菜单和界面菜单。具体的编写在介绍各界面功能时再详细介绍。5 系统用户界面的实现为方便用户参照使用,下面分别就各实验界面模块回调函数的编写原理及功能的实现进行介绍,并对实验子界面模块部分的实验进行演示。5.1 引导模块5.1.1 回调函数的编写在开始按钮和系统说明按钮的callback属性选项中,直接调用主界面的回调函数名main和函数push,将开始引导界面和主界面、系统说明界面联系起来。改变MATLAB当前工作路径,把存放开始引导模块的回调函数introduction.m和所有实验子界面及系统说明界面的M函数的路径设置为当前路径,这样就可直接在MATLAB环境中输入相应的命令,就可进入实验系统。引导模块界面如图5-1所示。 图5-1信号处理实验系统引导界面5.1.2 界面功能引导界面是用于进入数字信号处理实验系统主界面的,在界面上设有“开始”和“系统说明”按钮。用户只要单击界面中的“开始”按钮就可进入实验主界面进行实验。 单击“系统说明”按钮就可以了解系统的相关信息。5.2系统说明模块系统说明界面是用于简单介绍实验系统及各个实验子界面的内容及使用方法。说明模块的界面如图5-2所示。图5-2 信号处理实验系统说明界面5.3 主界面模块5.3.1 回调函数的编写 直接在菜单的callback属性选项中输入各个实验子界面及说明界面的回调函数名来实现将各个按钮和菜单与相应的界面联系起来。主模块的界面外观如图5-3所示。图5-3 信号处理实验系统主界面5.3.2 界面功能主界面是用于进入信号处理各个实验子界面的,它使用菜单及其一些按钮控件来实现,将各个实验子界面有机地联系到一起,使界面美观,