MATALB GUI 设计.docx

上传人:b****7 文档编号:9265715 上传时间:2023-02-03 格式:DOCX 页数:59 大小:536.75KB
下载 相关 举报
MATALB GUI 设计.docx_第1页
第1页 / 共59页
MATALB GUI 设计.docx_第2页
第2页 / 共59页
MATALB GUI 设计.docx_第3页
第3页 / 共59页
MATALB GUI 设计.docx_第4页
第4页 / 共59页
MATALB GUI 设计.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

MATALB GUI 设计.docx

《MATALB GUI 设计.docx》由会员分享,可在线阅读,更多相关《MATALB GUI 设计.docx(59页珍藏版)》请在冰豆网上搜索。

MATALB GUI 设计.docx

MATALBGUI设计

 

摘要:

MATLAB的GUIDE是专门用于图形用户界面(GUI)程序设计的快速开发环境。

GUI是使用图像,输入的文字,带图标的屏幕的计算机界面,取而代之许多键盘的功能,让用户可以通过图标和鼠标与他们的电脑进行交互,而不是在命令行中输入文本。

本文首先介绍了MATLAB的数据可视化功能的基础——MATLAB绘图函数。

接着介绍了MATLAB中数据可视化技术的底层概念——句柄图形对象,它为用户操作图形元素提供了最精细的控制方法。

在此基础上详细介绍了MATLAB在图形用户界面方面的强大功能,分别介绍了用户界面菜单对象、用户界面上下文菜单对象和用户界面控制对象,主要从介绍GUIDE入手,给出了利用GUIDE制作图形用户界面的基本方法。

紧接着就如何设计和制作用户界面对话框作了一定介绍。

最后,以周期方波信号的分解为具体实例,说明MATLABGUI的应用,此例也在一定程度上显示出了MATLABGUI的强大功能及其优越性。

关键词:

MATLAB绘图句柄图形GUI程序信号分解

 

MATLABGUIgraphicaluserinterfaceprogramming

Abstract:

MATLAB'sGUIDEisdevotedtographicaluserinterface(GUI)programdesignedforrapiddevelopmentenvironment.GUIistouseimages,textinputwithacomputerscreeniconinterface,replacedmanyofthefunctionsofthekeyboard,souserscaniconandmousetointeractwiththeircomputers,ratherthanentertextinthecommandline.ThispaperintroducestheMATLAB-baseddatavisualizationcapabilities-MATLABgraphicsfunctions.ThenintroducedtheMATLABdatavisualizationtechnologyintheunderlyingconcept-HandleGraphicsobjectgraphicelementsfortheuseractionprovidesthemostprecisecontrol.Onthisbasis,detailsoftheMATLABgraphicaluserinterfaceintermsofpower,introducedtheobjectuserinterfacemenu,userinterfaceobjectsanduserinterfacecontextmenucontrolobjects,mainlyfromtheintroductionGUIDEstart,giventhegraphicaluserinterfaceusingGUIDEproductionthebasicmethod.Finally,thedecompositioncyclesquarewavesignalforspecificexamplestoillustratetheMATLABGUIapplication,thiscasealsotoacertainextent,theMATLABGUIshowsthepowerandsuperiority.

Keywords:

MATLABGraphicsHandleGraphicsGUIprogramSignaldecomposition

 

1引言

MATLAB是美国Mathworks公司于20世纪80年代中期推出的一套数值计算软件,可以实现数值分析、矩阵运算、自动控制、信号处理和图像处理等若干领域的计算和图形显示功能。

它不仅包含大量高度集成的函数可供直接调用以解决各种复杂的计算,而且提供了简洁的人机界面、丰富的图形用户界面GUI(GraphicalUserInterfaces)开发功能以及求解特定学科问题的求解工具箱ToolBox。

与此同时编写程序MATLAB所需时间往往能比使用其他编程语言缩短许多倍。

自面世以来,MATLAB在教学和科研等领域受到了广泛的重视和应用,在解决复杂的数学计算和新算法的研究中具有极大的优势。

同时MATLAB又具有易学易用性、代码短小高效、计算功能强大、可扩展性能等特点。

在欧美等高校MTALAB已经成为线性代数、自动控制理论、概率论及数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具,是攻读学位的大学生、硕士生、博士生必须掌握的基本技能。

因此掌握它具有十分重要的意义。

GUI即人机交互图形化用户界面设计,英文全名是GraphicalUserInterface,直译为图形用户界面,它实际上是指这样的程序:

用户可以在前台界面中通过一系列鼠标、键盘操作,指挥后台程序实现某些功能。

GUI是一种结合计算机科学、美学、心理学、行为学,及各商业领域需求分析的人机系统工程,强调人—机—环境三者作为一个系统进行总体设计。

这种面向客户的系统工程设计其目的是优化产品的性能,使操作更人性化,减轻使用者的认知负担,使其更适合用户的操作需求。

GUI的广泛应用是当今计算机发展的重大成就之一,他极大地方便了非专业用户的使用人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。

依托于MATLAB的特性以及强大的可视化功能,MATLABGUI在数学教学、地球信息系统开发、信号分析系统、数字调制仿真系统等科学研究中得到广泛应用。

 

2MATLAB绘图

2.1MATLAB的图形窗口

MATLAB有一个用于图形输出的专用窗口,称为图形窗口。

通过该窗口,可以自由查看和设置有关图形输出及表达的参数,并获得高质量的图形文件。

在执行一个绘图命令前,MATLAB并没有打开图形窗口,只有在执行创建图形窗口命令后,系统才会自动创建一个图形窗口。

若在命令执行前,已经存在了若干窗口,绘图命令会将图形输出到当前窗口,并将原来存在的该窗口的图形覆盖掉。

在MATLAB下建立一个图形窗口(图2.1)由命令figure完成,(或命令窗口FILE-NEW-FIGURE选项),每执行—次figure就产生一个图形窗口,可以同时产生若干个图形窗口,MATLAB自动把这些窗口的名字添加序号(No.1,No.2,…)作为区别,同时,这些窗口都被自动分配一个句柄,窗口上有菜单和工具条,其中包括通用的文件操作命令、编辑命令,对图形的坐标轴、线型等特性进行设置的专用工具,还可以为图形添加标注。

图2.1MATLAB图形窗口

一些按键功能:

按钮

允许对图形进行编辑;按钮

允许对图形进行放缩操作;按钮

允许对图形进行缩放操作;按钮

允许把图形旋转为三维图形。

2.2二维平面图形与坐标

2.2.1几个基本的绘图命令

1.线性坐标曲线plot

函数命令plot是MATLAB绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。

也就是说,使用plot函数之前,必须首先定义好曲线上每一点的x及y坐标,常用格式为:

(1)plot(x)当x为一向量时,以x元素的值为纵坐标,x的序号为横坐标值绘制

曲线。

当x为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲

线,当x为m×n矩阵时,就由n条曲线。

(2)plot(x,y)以x元素为横坐标值,y元素为纵坐标值绘制曲线。

(3)plot(x,y1,x,y2,…)以公共的x元素为横坐标值,以y1,y2,…元素为纵坐标值绘制多条曲线。

2.对数坐标曲线命令

MATLAB提供了绘制对数和半对数坐标曲线的函数,调用格式为:

semilogx(x1,y1,选项1,x2,y2,选项2,…)

semilogy(x1,y1,选项1,x2,y2,选项2,…)

loglog(x1,y1,选项1,x2,y2,选项2,…)

函数semilogx绘制的曲线,其横坐标为对数曲线;而函数semilogy绘制的曲线,其纵坐标为对数曲线;函数loglog绘制的曲线,其横纵坐标为对数曲线。

3.双y轴图形

MATLAB提供了绘制双y轴图形的函数,调用格式为:

plotyy(X1,Y1,X2,Y2)

plotyy(X1,Y1,X2,Y2,'function')

plotyy(X1,Y1,X2,Y2,'function1','function2')

此种调用格式可以在窗口中同时绘制曲线两条曲线,(x1,y1)用左侧的y轴,曲线(x2,y2)用右侧的y轴。

Function用来指定绘图的函数名,如:

plot、semilogx、semilogy等。

2.2.2线性和颜色

前面介绍的plot函数有多种用法,在绘制图形时MATLAB自动安排作图的线性和线段的颜色以及线段顶点的标记。

事实上,MATLAB的plot函数可以设置和管理曲线的线段类型顶点标记和线段颜色。

多组变量绘图plot可以:

plot(x1,y1,选项1,x2,y2,选项2,……)上面的plot格式中,选项是指为了区分多条画出曲线的颜色,线型及标记点而设定的曲线的属性。

MATLAB在多组变量绘图时,可将曲线以不同的颜色,不同的线型及标记点表示出来。

这些选项如下表所示:

表2.1MATLAB常用的线段类型、线段颜色和顶点标记参数

plot函数典型用法plot(x,y,s),其中,s是类型说明参数,它是字符串。

S字符串可以是其中的类型符号的一种,也可以是线性与颜色和顶点的组合。

在plot函数中如果没有s字符串,plot函数将使用缺省设置绘制曲线。

MATLAB缺省设置绘制曲线规定曲线一律用实线线性。

2.2.3多图形显示和坐标系的调整

有时需要在一个图形窗口中绘制显示几幅图,以便对几个函数进行直观的比较。

subplot是将多个图画到一个平面上的工具。

调用格式为:

subplot(m,n,p)或者subplot(mnp)。

其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果第一个数字是2就是表示2行图。

p是指你现在要把曲线画到figure中哪个图上,最后一个如果是1表示是从左到右第一个位置

由前面的叙述已经看出,MATLAB的绘图可以根据要绘制的曲线数据范围自动地选择合适的坐标系,使曲线尽可能清晰地显示出来。

因此,一般情况下用户不必自己选择绘图坐标。

如果感觉自动选择的坐标不太适合,可以用手动的方式选择新的坐标系,在MATLAB中能实现此功能命令的是axis函数。

调用格式为:

axis([xminxmaxyminymaxzminzmax])。

2.3三维绘图

2.3.1基本的三维绘图命令

建立三维线条图的函数plot3和二维的plot相比,只多了第三维数据,其他与二维函数plot相同。

调用格式为:

Plot3(X1,Y1,Z1,S1,X2,Y2,Z2S2,...)或Plot3(X,Y,Z,S)

参数含义如下:

●Xn,Yn,Zn分别为第一到第三维数据,是向量或矩阵,但尺寸必须相等;

●S,S1,S2是可选的字符串,用来设置线性、颜色以及数据点标记等。

如果把z轴去掉就相当于从上向下看三维图,她是一个二维的图形,这和plot画出的曲线相同,由此可见,pot3实际上就是二维plot在三维空间的扩展。

在MATLAB中,函数fill和patch是图形的填充函数,它们的用法基本相同,下面仅以函数patch为例来说明这两个函数的使用。

Patch函数的调用格式为:

绘制二维图形时:

patch(X,Y,C)

绘制三维图形时:

patch(X,Y,Z,C)

函数中参数X,Y,Z是向量或矩阵,C用来指定颜色。

2.3.2三维曲面绘图命令

三维曲面绘图命令可分为平面网格点的生成、在平面网格基础上绘制三维网格以及对三维表面进行处理三个步骤。

1.平面网格点的生成

在数学上,函数z=f(x,y)的图形是三位的空间曲面,在MATLAB中。

总是假设函数z=f(x,y)定义在一个矩形D的区域上。

为了绘制在区域D上的三位曲面,MATLAB的方法是首先将[x0,xm]在x方向上分成m份,将在[y0,yn]y方向上分成n份,由各分划点分别作平行于坐标轴的直线,将区域D分成m×n个小矩形,计算出网点的函数值。

对于每个小矩形,在空间中央决定四个点(xi,yi,f(xi,yi)),连接四个点得到一个空间的四边形片。

而所有这些四边形片连在一起构成函数z=f(x,y)定义在区域D上的空间网格曲面。

在MATLAB中,用函数meshgrid命令来生成平面上的小矩形顶点坐标值的矩阵。

调用格式为:

[X,Y]=meshgrid(x,y)

[X,Y]=meshgrid(x)

[X,Y,Z]=meshgrid(x,y,z)

[x,y]=meshgrid(xa,ya),当xa,ya分别为m维和n维行向量,得到的x,y均为n行m列矩阵.meshgrid常用于生成x-y平面上的网格数据.对于[X,Y]=meshgrid(x)相当于[X,Y]=meshgrid(x,x)。

x是区间[x0,xm]上分划点组成的向量,y是是区间[y0,yn]上分划点组成的向量,X,Y为输出变量矩阵,矩阵X的行向量都是向量x,矩阵Y的列向量都是向量y。

这样,X和Y的元素组(X(i,j),Y(i,j))恰好是区域D的第(i,j)网格点。

2.三维网格命令mesh

在得到了网格点上的函数值矩阵后,可以利用MATLAB中函数mesh来生成函数的网格曲面。

即各个网格线段组成的曲面。

mesh函数的一般调用格式为:

mesh(X,Y,Z,C)或mesh(X,Y,Z)或mesh(x,y,Z,C)或mesh(Z,C)或mesh(Z)或mesh(...,C)

mesh(X,Y,Z,C)这是一般的调用格式,X,Y,Z,C是同维数的矩阵,X,Y,Z对应确定空间上的网格点,C为颜色矩阵。

也就是说,网格曲面的顶点对应空间的顶(X(i,j),Y(i,j),Z(i,j)),而网格的网格线颜色由C的值根据当前的色谱来着色。

mesh(X,Y,Z)调用格式如同mesh(X,Y,Z,C)中C=Z的情况。

mesh(x,y,Z,C)x,y是向量是mesh(X,Y,Z,C)的特殊情况mesh(Z,C)Z和C都是m×n矩形,等价于mesh(x,y,Z,C),mesh(Z)的调用格式如同mesh(Z,C)中Z=C的简单调用形式。

3.三维表面命令surf

实曲面是对网格曲面的网格块区进行着色的结果。

在MATLAB中,函数surf可实现对网格曲面进行着色,将网格曲面转化为实曲面。

Surf命令的调用格式:

surf(x,y,Z)   

x,y向量的长度分别等于矩阵Z的列数和行数

函数surf的曲面生成过程与mesh相似,但着色机理与mesh不同。

mesh命令仅对网格着色,而surf是对网格片着色,网格线用黑色标出。

一般情况下,surf用默认的着色方式对对网格片着色,还可以用MATLAB的函数shading来改变颜色。

2.3.3三维视图可视效果的控制

由于三维视图表现的是一个空间图形,因此,从不同的位置和角度观察图形有不同的效果。

另外,在复杂的三维视图中,经常会出现图形的某一部分被遮掩的地方的情况,这些会对一些问题的分析造成严重的影响。

针对这一问题,在MATLAB中创建了对视图可视效果的控制的命令函数。

●三维图形观察点和视觉的控制view

在MATLAB中,控制图形的观察点和视觉的函数是view,调用格式为:

view(az,el)或view([az,el])或view([x,y,z])

az是azimuth(方位角)的缩写,el是elevation(仰角)的缩写。

它们均以度为单位。

系统缺省的视点定义为方位角-37.5°,仰角30°。

当x轴平行观察者身体,y轴垂直于观察者身体时,az=0;以此点为起点,绕着z轴顺时针运动,az为正,逆时针为负。

EL为观察者眼睛与xy平面形成的角度。

当观察者的眼睛在xy平面上时,el=0;向上el为正,向下为负。

●三维图形的照相campos

在MATLAB中有一种类似照相机可变焦透镜功能的函数,以实现对观察点的控制。

此种功能的函数比较多,我们仅以函数campos来说明。

调用格式为:

CP=campos得到当前的句柄照相机你的位置:

Campos([XYZ])设置照相机的位置;

Campos(mode)得到照相机的位置模式。

●三维图形的透视命令hidden

在MATLAB中,用mesh命令绘制网格图时,在默认的情况下系统会消隐掉重叠在后面的网格,而利用透视命令hidden可以看到被掩盖的部分。

调用格式为:

hiddenon默认模式,消隐掉重叠在后面的网格线;

hiddenoff关掉消隐命令,从而能看到被遮挡的部分。

●曲面图形颜色的遮掩shading

在MATLAB中函数shading用于处理曲面图形颜色均衡。

它有三种调用格式,分别如下:

Shadingflat该格式将整个网格的值在其每个网眼上来确定一个标志颜色的值,由于相邻网眼的值相近,因此其颜色也比较相近。

即去掉各片连接处的线条,平滑当前图形颜色;

shadingfaced此格式是MATLAB的默认格式,带有连接线条,它对网眼的颜色不做处理,但将加深网线的黑色;

shandinginterp该格式将在网眼内插法详细计算网眼内不同位置的颜色差异,去掉连接线条,在各片之间使用颜色插值,由此法绘制的图形,颜色最连贯,着色光顺性最好,但也最费时。

2.4特殊图形绘制

在工程教学和计算中,有时为了将抽象的数据表达的更形象,除了绘制出它的二维、三维以及四位图形外。

还要经常用到诸如直方图、面积图、饼图、射线图等特殊图形。

MATLAB提供了很多绘制特殊图形的命令,如绘制以下图形:

●条形图和面积图(BarandAreaGraphs)

●饼形图(PieCharts)

●离散型数据图

●方向和速度矢量图形

●等高线的绘制(ContourPlots)

(1)条形图和面积图

条形图和面积图用于绘制向量和矩阵数据,这两种图形可以用来比较不同组数据的在总体数据中所占的比例,其中条形图适于表现离散型数据,而面积图适于表现连续型数据。

函数

功能描述

bar

绘制矩阵Y(m×n)各列的垂直条形图,各条以垂直方向显示

barh

绘制矩阵Y(m×n)各列的垂直条形图,各条以水平方式显示

bar3

绘制矩阵Y(m×n)各列的三维垂直条形图,条以垂直方向显示

bar3h

绘制矩阵Y(m×n)各列的三维垂直条形图,以水平方式显示

表2.2绘制条形图和面积图形指令

(2)饼形图

在统计学中,人们经常要用到饼形图来表示各个统计量占总量的份额,饼形图可以显示向量或矩阵中的元素占所有元素总和的百分比,MATLAB提供了pie函数和pie3函数,分别用于绘制二维饼形图和三维饼形图。

(3)离散型数据图

MATLAB7提供了一系列适于表现离散型数据的函数。

其中常用的主要有stem函数、stem3函数和stairs函数。

(4)方向和速度矢量图形

MATLAB7提供了一些函数用于绘制方向矢量和速度矢量图形,这些函数有compass、feather、quiver和quiver3。

函数

功能描述

compass

显示极坐标图形中的极点发散出来的矢量图

feather

显示从一条水平线上均匀间隔的点所发散出来的矢量图

quiver

显示由(u,v)矢量特定的二维矢量图

quiver3

显示由(u,v,w)矢量特定的三维矢量图

表2.3绘制方向矢量和速度矢量图形指令

(5)等高线的绘制

等高线函数为创建、显示并标注由一个或多个矩阵确定的等值线。

函数名

功能描述

clabel

使用等值矩阵生成标注,并将标注显示在当前图形

contour

显示矩阵Z的二维等高线图

contour3

显示矩阵Z的三维等高线图

contourf

显示矩阵Z的二维等高线图,并在各等高线之间用实体颜色填充

contourc

用于计算由其他等高线函数调用的等值矩阵

meshc

创建一个与二维等高线图匹配的网线图

surfc

创建一个与二维等高线图匹配的曲面图

表2.4绘制等高线图形指令

 

3句柄图形

3.1图形对象、对象句柄和句柄图形的结构层次

句柄图形是基于这样的概念,即一幅图的每一组成部分是一个对象,每一个对象有一系列句柄和它相关,每一个对象有按需要可以改变的属性。

当今计算机行业最流行的术语之一便是对象这个词。

面向对象的编程语言,数据库对象,操作系统和应用程序接口都使用了对象的概念。

一个对象可以被粗略地定义为由一组紧密相关、形成唯一整体的数据结构或函数集合。

在MATLAB中,图形对象是一幅图中很独特的成分,它可以被单独地操作。

由图形命令产生的每一件东西都是图形对象。

它们包括图形窗口或仅仅说是图形,还有坐标轴、线条、曲面、文本和其它。

这些对象按父对象和子对象组成层次结构。

计算机屏幕是根对象,并且是所有其它对象的父亲。

图形窗口是根对象的子对象;坐标轴和用户界面对象(在下一章讨论)是图形窗口的子对象;线条、文本、曲面、补片和图象对象是坐标轴对象的子对象。

这种层次关系在图中给出。

图3.1对象层次结构图

根可包含一个或多个图形窗口,每一个图形窗口可包含一组或多组坐标轴。

所有其它的对象uicontrol对象和uimenu对象外都是坐标轴的子对象,并且在这些坐标轴上显示。

所有创建对象的函数当父对象或对象不存在时,都会创建它们。

例如,如果没有图形窗口,plot(rand(size([1:

10])))函数会用缺省属性创建一个新的图形窗口和一组坐标轴,然后在这组坐标轴内画线。

在MATLAB中,每一个对象都有一个数字来标识,叫做句柄。

每次创建一个对象时,就为它建立一个唯一的句柄。

计算机屏幕作为根对象常常是0。

h=figure命令建立一个新的图形窗口,变量h中返回它的句柄值。

图形窗口的句柄为整数,通常显示在图形窗口标题条中。

其它对象句柄是双精度浮点数。

在MATLAB中,除了根对象外,所有的对象都有与之相对应的内置函数创建,内阁函数在创建的同时,还可以返回该对象的句柄h。

此类函数的名称和功能如下:

函数名

功能描述

axes

坐标轴

image

MATLAB7语言中的图像

light

光源

line

二维图形中最基本的图形对象

patch

按指定方式填充的多边形

rectangle

具有可设置边界和表面颜色的二维图形对象

surface

图形表面

text

图形中的文本

uicontrol

创建用户界面控制对象

uimenu

创建用户界面菜单对象

表3.1创建图形对象的底层函数

对于某些图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1