MATLAB软件MATLAB简介Matlab是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件。它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便、界面良好的用户环境。它还包括了Toolbox(工具箱)的各类问题的求解工具,可用来求解特定学科的问题。其特点是:[16,17,18](1)可扩展性:Matlab最重要的特点是易于扩展,它允许用户自行建立指定功能的M文件。对于一个从事特定领域的工程师来说,不仅可利用Matlab所提供的函数及基本工具箱函数,还可方便地构造出专用的函数。从而大大扩展了其应用范围。当前支持Matlab的商用Toolbox(工具箱)有数百种之多。而由个人开发的Toolbox则不可计数。(2)易学易用性:Matlab不需要用户有高深的数学知识和程序设计能力,不需要用户深刻了解算法及编程技巧。(3)高效性:Matlab语句功能十分强大,一条语句可完成十分复杂的任务。如fft语句可完成对指定数据的快速傅里叶变换,这相当于上百条C语言语句的功能。它大大加快了工程技术人员从事软件开发的效率。据MathWorks公司声称,Matlab软件中所包含的Matlab源代码相当于70万行C代码。MATLAB的广泛应用由于Matlab具有如此之多的特点,在欧美高等院校,Matlab已成为应用于线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具:在研究单位、工业部门,Matlab也被广泛用于研究和解决各种工程问题。当前在全世界有超过40万工程师和科学家使用它来分析和解决问题[14]。Matlab作为科学计算软件,主要适用于矩阵运算和信息处理领域的分析设计,它使用方便、输入简捷,运算高效、内容丰富,并且有大量的函数库可提供使用,与Basic,C和Fortran相比,用Matlab编写程序,其问题的提出和解决只需要以数学方式表达和描述,不需要大量繁琐的编程过程。利用Matlab软件并通过计算机仿真光学空间滤波实验过程的新方法,其特点是:既可以随意改变所设计滤波器的参量,又可以对输入图像进行振幅、相位或复合滤波,并且可实现傅里叶变换频谱中相位信息的提取、存储和利用,因而能够完成一般光学实验中往往难以实现的某些操作.并分别给出了网格滤波、低通、高通及相位滤波等仿真实验结果。这种仿真实验给光学滤波器的设计和图象处理带来很大方便,同时也为相关器件的设计提供了一条新的途径[19]。MATLAB软件系统构成MATLAB软件主要包括主包、Simulink和工具箱三大部分组成。下图为MATLAB界面:MATLAB语言MATLAB可以认为是一种解释性语言,可以直接在MATLAB命令窗口键入命令,也可以在编辑器内编写应用程序,这样MATLAB软件对命令或程序中各条语句进行翻译,然后在MATLAB环境下对它进行处理,最后返回运算结果。MATLAB语言的基本语句结构为:变量名列表=表达式其中等号左边的变量名列表为MATLAB语句的返回值,等号右边是表达式的定义,它可以是MATLAB允许的矩阵运算,也可以使函数调用。等号右边的表达式可以由分号结束,也可以由逗号或回车结束,但他们的含义是不同的,如果用分号结束,则左边的变量结果将不在屏幕上显示出来,否则将把结果全部显示出来。MATLAB语言和C语言有所不同,在调用函数式MATLAB允许一次返回多个结果,这时等号左边是用[]括起来的变量列表[20]。MATLAB中的傅里叶变换函数[21]1.一维快速傅里叶变换函数fft图3.1MATLAB7.0界面格式:X=fft(x,N)功能:采用FFT算法计算序列向量x的N点DFT变换。当N省略时,fft函数自动按x的长度计算DFT。当N为2的整数次幂时,fft按基数2算法计算,否则用混合计算。2.一维快速逆傅里叶变换函数ifft格式:x=ifft(X,N)功能:采用FFT算法计算序列向量X的N点IDFT变换。3.二维快速傅里叶变换函数fft2格式:X=fft2(x)功能:返回矩阵X的二维DFT变换。4.二维快速逆傅里叶变换函数ifft2格式:X=ifft2(x)功能:返回矩阵X的二维IDFT变换。MATLABGUI设计工具简介图形用户界面的程序是在图形界面下创建与用户交互的控件元素,用户可以通过操作这些交互控件实现特定的功能,并且可以返回显示在程序界面相应的结果显示区域中。因此,用户只和前台界面下的控件发生交互,而所有运算、绘图等内部操作都分装在内部,终端用户不需要去追究这些复杂过程的代码。图形用户界面编程大大提高了用户使用MATLAB程序的易用性。GUI简介在Matlab中,图形用户界面(graphicaluserinterface,GUI)是Matlab中一个专用于GUI程序设计的向导设计器,而GUI是由各种图形对象,如图形窗口、图轴、菜单、按钮、文本框等构建的用户界面,是人机交互的有效工具和方法。通过GUIDE可以很方便地设计出各种符合要求的图形用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。GUI设计既能以基本的Matlab程序设计为主,也能以鼠标为主,利用GUIDE工具进行设计,也可综合以上两种方法进行设计。GUIDE主要是一个界面设计工具集。Matlab将所有GUl支持的用户控件都集成在这个环境中并提供界面外观、属性和行为相应方式的设置方法。GUIDE将用户保存设计好的图形用户界面保存在一个FIG资源文件中,同时自动生成包含图形用户界面初始化和组件界面布局控制代码的M文件,这个M文件为实现回调函数的编写提供了一个参考框架。FIG文件是一个二进制文件,包含系列化的图形窗口对象。所有对象的属性都是用户创建图形窗口时保存的属性。该文件最主要的功能是对象句柄的保存。M文件包含GUI设计、控制函数及控件的回调函数,主要用来控制GUI展开时的各种特征。该文件基本上可以分为GUI初始化和回调函数2个部分,控件的回调函数可根据用户与GUI的具体交互行为分别调用。Matlab定义的各种图形对象及其关系如下图所示。控制对象Uicontrol跟对象Room图形窗口对象Figure右菜单对象Uicontextmenu菜单对象Uimenu坐标轴对象Axes表面图对象Surface文字对象Test光源对象Light图像对象Image线对象Line图3.1GUI对象层次结构图GUI所含有的所有控件必须随时对鼠标的单击做出回应,当然也要对可能的键盘输入做出恰当的回应。创建GUI组建的三个主要部分如下[22]:(1)构成:GUI的所有项目都是图形界面的重要构成(按钮、标签、可编辑框等)。(2)图形窗口:GUI的所有构成都必须安放在图形窗口中,该图形窗口就显示在计算机屏幕上。(3)回调函数:对无论是鼠标的单击,还是对菜单的选取,还是对可选框的选取等操作作出反应,能够通过回调函数执行相应语句,完成用户需求。也即是说GUI的所有图形组件实际上就是一个回调函数与可执行函数语句的链接。上面三个部分中,最后一条最为重要。如果想建一个性能好的GUI界面,首要的就是回调函数必须能够很好地连接需要执行的MATLAB语句。GUI开发环境在MATLAB的命令窗口里输入GUIDE,确认后就可以进入到GUIDE开发环境下,或者单击菜单File→New→GUI来打开开发环境。环境窗口如下:设计界面的过程就是把我们需要的控件从控件调色板拖到(或复制到)控件布局编辑区,并使用列队工具把这些控件排列整齐合理的过程。把控件拖到编辑区的方法有两种:一是用鼠标单击所需要的控件,然后在编辑区再单击鼠标即可得到我们所需要的控件;另一种方法是选中我们需要的控件,然后再编辑区用鼠标滑过的框区就会生成开一个大小等于矿区的控件[20]。GUIDE菜单编辑工具GUIDE还提供一个菜单编辑工具,用来编辑窗口标题栏下面的下拉式菜单,以及用鼠标右键单击控件调出的弹出式菜单。选择GUIDE的菜单Tools|MenuEditor,可以打开菜单编辑器,如下图所示。MenuBar为常规的下拉式菜单,ContextMenus为弹出式菜单。单击按钮,可以添加新的菜单项;单击按钮,可以在所选择的菜单项下面添加子菜单;单击按钮,可以删除所选的项。设计原则由于要求不同,设计出来的界面也就千差万别,设计好的图形界面需要考虑以下因素:(1)简单性设计界面时,力求简洁、清晰地体现界面的功能和特征。删去可有可无的一些设计,保持整洁。图形界面要直观,减少窗口数目。(2)一致性即要求界面的风格尽量一致,不要和已经存在的界面风格截然相反。(3)习常性菜单栏M文件编辑器属性查看器对象浏览器激活运行工具栏菜单编辑器队列工具栏控件调色板图3.2GUI开发环境界面设计时,尽量使用人们所熟悉的标志和符号。(4)其他因素还要注意界面的动态性能。比如界面的响应要速度、连续,对长时间运算的要给出等待的时间提示,并允许用户中断运算等等。