matlab讲义第八章学习教案

上传人:可**** 文档编号:110474055 上传时间:2022-06-18 格式:PPTX 页数:48 大小:689.22KB
收藏 版权申诉 举报 下载
matlab讲义第八章学习教案_第1页
第1页 / 共48页
matlab讲义第八章学习教案_第2页
第2页 / 共48页
matlab讲义第八章学习教案_第3页
第3页 / 共48页
资源描述:

《matlab讲义第八章学习教案》由会员分享,可在线阅读,更多相关《matlab讲义第八章学习教案(48页珍藏版)》请在装配图网上搜索。

1、会计学1matlab讲义讲义(jingy)第八章第八章第一页,共48页。8.1 句柄图形(txng) 在Matlab中,句柄图形指一系列描述图形表现形式和显示方式的底层图形特征函数的总称。通过交互式使用句柄图形对象及属性,用户几乎可以对Matlab图形特征进行任何方式的控制。 句柄图形的基本思想是:Matlab的每一个可视部分(b fen)都被视为对象,每个对象都有一个唯一的标识符(也称为句柄)与之对应,每一个对象有按需要可以改变的属性。 Matlab中所有的绘图和图形函数都可以创建图形对象。这些对象按父对象和子对象组成层次结构。第1页/共48页第二页,共48页。图8.1 对象(duxing)

2、层次结构 第2页/共48页第三页,共48页。 计算机屏幕是根对象,并且是所有其它对象的父亲。图形窗口是根对象的子对象;坐标轴和用户界面对象是图形窗口的子对象;线条(xintio)、文本、曲面、补片和图象对象是坐标轴对象的子对象。 根可包含一个或多个图形窗口,每一个图形窗口可包含一组或多组坐标轴。所有其它的对象(除了uicontrol和uimenu外)都是坐标轴的子对象,并且在这些坐标轴上显示。所有创建对象的函数当父对象或对象不存在时,都会创建它们。 例如,如果没有图形窗口,plot等绘图函数会用缺省属性创建一个新的图形窗口和一组坐标轴,然后在这组坐标轴内画线。第3页/共48页第四页,共48页。

3、每次创建一个对象时,就为它建立一个唯一的句柄。计算机屏幕作为根对象常常是0。Hf_fig=figure命令建立一个新的图形窗口,变量Hf_fig中返回它的句柄值。图形窗口的句柄为整数(zhngsh),通常显示在图形窗口标题条中。其它对象句柄是MATLAB双精度的浮点值。可以获得图形、坐标轴和其它对象的句柄。例如,Hf_fig=gcf返回当前图形窗口的句柄值,而Ha_ax=gca返回当前图形窗口内当前坐标轴的句柄值。第4页/共48页第五页,共48页。 虽然句柄变量可以取任意名字,但为了提高可读性,句柄对象的变量取名一般以大写的H开头,跟之以一个辨识对象类型的字母,然后是一个下划线,最后是一个或几

4、个描述符。例如,Hf_fig是一个图形窗口的句柄,Ha_ax1是坐标轴对象的句柄,而Ht_title是一个文本对象的句柄。当对象类型不知道时,用字母x,如Hx_obj。 图形函数(hnsh)都为所建立的每个对象返回一个句柄(或句柄的列向量)。包括plot,mesh,surf等。有一些图形由一个以上对象组成。一个网格图由一个曲面组成,它只有一个句柄;而waterfall图形由许多线条对象组成,每个线条对象都有各自的句柄。 例如, Hl_wfall=waterfall(peaks(20) 对线条返回一个包含着20个句柄的列向量 第5页/共48页第六页,共48页。 所有对象都有属性来定义它们的特征,

5、通过设定这些属性来修正图形显示的方式。 对象属性可包括诸如对象的位置、颜色、类型、父对象、子对象及其它内容。每一个不同对象都有和它相关的属性,可以改变这些属性而不影响同类型的其他对象。有些属性是共同的,如颜色,而有些不同对象的属性是独一无二的。 对象属性包括属性名和与它们相联关的值。属性名是字符串,它们通常按混合格式显示,每个词的开头字母大写,如:LineStyle 。 MATLAB识别属性时不分大小写的。另外,只要用足够多的字符来唯一地辨识一个属性名即可。例如(lr),坐标轴对象中的位置属性可以用Position,position,甚至是pos来调用。第6页/共48页第七页,共48页。 当建

6、立一个对象时,它用一组缺省属性值,该值可以用两种方法来改变。一是用属性对(属性名,属性值)建立对象属性;二是在对象建立后改变属性。 Hf_1=figure(color,white) 它用缺省的属性值建立一个新的图形窗口,只是背景颜色被设为白色(bis)而不是缺省的灰色。 函数get返回某对象属性的当前值。函数get语法为: get(handle,PropertyName)。 例如: p=get(Hf_1,position) %返回具有句柄Hf_1图形的位置向量。 c=get(Hl_a,color) %返回具有句柄Hl_a对象的颜色。第7页/共48页第八页,共48页。 函数set改变句柄图形对象

7、属性,使用语法为: set(handle,PropertyName,value) 例如: set(Hf_1,Position,p_vect) %将具有句柄Hf_1的图形位置设为向量p_vect所指定的值 set(Hl_a,color,r) %将具有句柄Hl_a的对象的颜色设置成红色 一般(ybn)情况下,函数set可以有任意数目的 (PropertyName,PropertyValue)对。 例如: set(Hl_a,Color,r,Linewidth,2,LinStyle,- ) %将具有句柄Hl_a的线条变成红色,线宽为2点,线型为破折号 第8页/共48页第九页,共48页。 除了上述基本功

8、能,函数set和函数get还能提供帮助。例如: set(handle, PropertyName) % 返回一个可赋给由handle所描述对象的属性值列表。 set(Hf_1,Units) inches|centimeters|normalized|points|pixels %由Hf_1所引用图形的Unites属性是五个可允许的字符串,其中pixels 是缺省值。 如果指定一个没有固定值的属性,那么,MATLAB就会通知如下: set(Hf_1,Position) AfiguresPositionproperty doesnothave afixedsetofproperty values

9、除了set命令,句柄图形对象创建函数(例如figure,axis,line等)接受多个(du )属性名和属性值对。例如: figure(Color,blue,NumberTitle,off,Name,My Figure)%创建一个图形窗口,背景为兰色,标有MyFigure而不是缺省标题Figure No.1 第9页/共48页第十页,共48页。Hf_fig=figure%createafigurehavinganintergerhandleHf_fig=1Hl_line=line%createalinehavingafloating-pointerhandleHl_line=59.0002set

10、(Hl_line);%listsettablepropertiesandpotentialvaluesColorEraseMode:normal|background|xor|noneLineStyle:-|-|:|-.|+|o|*|.|xLineWidthMarkerSizeXdataYdataZdataButtonDownFcnClipping:on|offInterruptible:no|yesParentUserDataVisible:on|off第10页/共48页第十一页,共48页。 get(Hl_line); % list properties and current proper

11、ty values Color = 1 1 1 EraseMode = normal LineStyle = - LineWidth = 0.5 MarkerSize = 6 Xdata = 0 1 Ydata = 0 1 Zdata = ButtonDownFcn = Children = Clipping = on Interruptible = no Parent = 58.0002 Type = line UserData = Visible = on 在上例中,所创建的线条中的Parent属性就是包含(bohn)线条的坐标轴的句柄。而且所显示的图形列表被分为两组。在空行上的第一组,列

12、出了该对象的独有属性,而空行下的第二组列出所有的对象共有的属性。第11页/共48页第十二页,共48页。 注意到函数set和函数get返回不同的属性列表。 函数set只列出可以用set命令改变(gibin)的属性,而get命令列出所有对象的属性。 在上面的例子中,函数get列出了 Children 和Type属性,而set命令却没有。这一类属性只可读,但不能被改变(gibin),它们叫做只读属性。 与每一个对象有关的属性数目是固定的,但不同的对象类型有不同数目的属性。 象上面所显示的,一个线条对象列出了16个属性,而一个坐标轴对象列出了64个属性。第12页/共48页第十三页,共48页。 例如,用

13、非标准颜色(yns)画一条线,线的颜色(yns)用RGB值1 .5 0来指定,它是适中的橘黄色。 x=-2*pi:pi/40:2*pi; % create data y=sin(x); % find the sine of x Hl_sin=plot(x,y) % plot sine and save line handle Hl_sin= 59.0002 set(Hl_sin,Color,1 .5 0,LineWidth,3) % Change the color and width 现在加一个浅蓝色的cosine曲线: z=cos(x); % create the cosine of x

14、hold on % keep the sine curve Hl_cos=plot(x,z); % plot the cosine and save the handle set(Hl_cos,Color,.75 .75 1)% color it light blue hold off 第13页/共48页第十四页,共48页。 也可以用较少的步骤来实现同样的功能: Hl_lines=plot(x,y,x,z); % plot both curves and save both handles set(Hl_line(1),Color,1 .5 0,LineWidth,3) set(Hl_line

15、(2), Color,.75 .75 1) 如何加上一个(y )标题并且使字体比正常大一些呢? title(Handle Graphics Example) % add a title Ht_text=get(gca,Title) % get a handle to the title set(Ht_text,FontSize,16) % customize the font size第14页/共48页第十五页,共48页。 每一个对象都含有Parent 属性和Children属性。画在一组坐标轴上的线,其Parent属性值是坐标轴,而Children属性值是一个空距阵。同时,这个坐标轴对象具有

16、当作(dn zu)Parent属性值的图形句柄,而Children属性值是线条对象的句柄。 标题字符串和坐标轴的标志不包含在坐标轴的Children属性值里,而是保存在Title、Xlabel、Ylabel和Zlabel的属性内。 创建坐标轴对象时,这些文本对象就建立。title命令设置当前坐标轴内标题文本对象的String属性。 标准MATLAB的函数title,xlabel,ylabel和zlabel不返回句柄,而只接受属性和数值参量。 例如,下面的命令给当前图加一个24点的绿色标题: title(Thisisatitle.,Fontsize,24,Color,green)第15页/共48

17、页第十六页,共48页。 除了函数set和get,MATLAB还提供了另外两个函数来操作对象(duxing)和它们的属性。 任意对象(duxing)和它们的子对象(duxing)可以用 delete(handle) 来删除。 同样 reset(handle)将与句柄有关的全部对象(duxing)属性(除了Position属性)重新设置为该对象(duxing)类型的缺省值。 第16页/共48页第十七页,共48页。 句柄图形提供了对图形对象的访问(fngwn)途径,并且允许用函数get和set定制图形。但是,如果忘记保存句柄或图中对象的句柄将会怎样呢?或者,也许变量被覆盖又如何呢?如果不知道它们的句

18、柄,怎么改变对象的属性呢?MATLAB提供了查找对象句柄的工具。 Hf_fig=gcf %返回当前图形的句柄 Ha_ax=gca %返回当前图形的当前坐标轴的句柄 Hx_obj=gco %返回当前图形的当前对象的句柄 Hx_obj=gco(Hf_fig) %返回与句柄Hf_fig有关的图形中当前对象的句柄第17页/共48页第十八页,共48页。 当前对象的定义为用鼠标刚刚点过的对象。 这种对象可以是除根对象(计算机屏幕)之外的任何图形对象。但是,如果鼠标指针处在一个(y )图形中而鼠标按钮未点,gco返回一个(y )空距阵。 一旦获得了一个(y )对象的句柄,它的对象类型可以通过查询对象的Typ

19、e属性来获得。该属性是一个(y )字符串对象名。如figure,axes或text 。 例如: x_type=get(Hx_obj,Type)第18页/共48页第十九页,共48页。 MATLAB中的函数gcf,gca和gco是很好的例子,它们说明如何利用句柄图形来获得有关对象的信息(xnx)。函数gcf获得根对象的CurrentFigure的属性值,即是当前图形的句柄。 function h=gcf() % GCF Get current figure handle. % H=GCF returns the handle to the current figure.The current fu

20、gure is the figure(graphics % window)that graphics commands like PLOT,TITLE,SURF,etc.draw to if issued. % % Use the commands FIGURE to change the current figure to a diffent figure,or to create new % ones. % % See also FIGURE,CLOSE,CLF,GCA. % Copyright (c) 1984-94 by The MathWorks,Inc. h=get(0, Curr

21、entFigure);第19页/共48页第二十页,共48页。函数gca返回当前图形的CurrentAxes属性值,它的M文件描述(mio sh)如下。function h=gca() % GCA Get current axis handle. % H=GCA returns the handle to the current axis.The current axis is the axis that graphics % command like PLOT,TITLE,SURF,etc.draw to if issued. % % Use the commands AXES or SUBP

22、LOT to change the current axis to a different axis,or to % create new ones. % see also AXES,SUBPLOT,DELETE,CLA,HOLD,GCF. % Copyright (c) 1984-94 by The MathWorks,Inc. h=get(get(0, CurrentFigure),CurrentAxes);第20页/共48页第二十一页,共48页。 函数gco也相同,只是它在试图(sht)获得当前对象之前先检查图形是否存在。注意函数gcf和gca能促使建立相关的对象,如果它们不存在的话。如

23、下所示的函数gco,它先检查子对象(Children)是否存在,如果不存在,就不创建图形对象。function object=gco(figure) % GCO Handle of current object. % OBJECT=GCO returns the current object in the current figure. % % OBJECT=GCO(FIGURE) returns the current object in figure FIGURE. % % The current object for a given figure is the last object c

24、licked on with mouse. %Copyright (c) 1984-94 by The MathWorks,Inc. if isempty(get(0,Children) object= ; return; end; if (nargin=0) figure=get(0,CurrentFigure); end object=get(figure,CurrentObject);第21页/共48页第二十二页,共48页。 当需要一些除了CurrentFigure、CurrentAxes和CurrentObject之外的某些东西时,可以用函数get来获得一个对象的子对象的句柄向量。例如

25、: Hx_kids=get(gcf,Children) 返回一个向量,它包含当前图形子对象的句柄。 可以用获得子对象Children句柄的技术彻底(chd)搜索句柄图形的层次结构中来找到所要的对象。例如,在画出一些数据后,寻找绿色线条句柄的问题。 x=-pi:pi/20:pi; % create some data y=sin(x);z=cos(x); plot(x,y,r,x,z,g); % plot two lines in red and green Hl_lines=get(gca,Children); % get the line handles for k=1:size(Hl_li

26、nes) % find the green line if get(Hl_lines(k),Color)=0 1 0 Hl_green=Hl_lines(k) end end Hl_green= 58.0001 第22页/共48页第二十三页,共48页。 为了简化查找对象句柄的过程,MATLAB 4.2版本和以后(yhu)的版本提供了内置函数findobj。该函数返回有指定属性值的所有对象句柄。 函数findobj返回符合所选判据的对象的句柄。它检查所有的Children,包括坐标轴的标题和标志。如果没有对象满足指定的判据,findobj返回空距阵。 用函数findobj,前面的例子变成一行:

27、Hl_green=findobj(0,Type,line,Color,0 1 0); 第23页/共48页第二十四页,共48页。 gco命令返回当前对象的句柄,该对象就是用鼠标刚刚点击过的对象。然而,MATLAB怎么知道哪个对象被选中了呢?例如,当点击一幅图中两条线的交点时,应该返回哪个句柄?或者当鼠标点击时指针离线有多远仍能选中该线?这些答案要根据MATLAB选择对象规则和堆积次序。 堆积次序决定哪一对象叠加在其它对象上。开始时,堆积次序在对象被创建时就被决定,最后创建的对象在堆栈的顶部。例如,如果发出两条figure命令,就产生两个图形。第二个图画在第一个的上面。而最终的堆积次序是图2在图1

28、的上面,当前图形gcf是图2。如果发出figure(1)命令或者点击图1,堆积次序就改变,图形框架1移动到堆栈的顶端(dngdun),成为当前图形。 第24页/共48页第二十五页,共48页。 一个图形对象和许多其它句柄图形对象的位置(wi zhi)属性Position是一个4元素的行向量 left,bottom,width,height。 其中left,bottom是该对象相对于它的父对象的的左下角的位置(wi zhi),而width,height是该对象的宽度和高度。这些位置(wi zhi)向量中的值的单位是由该对象的单位属性Units)所指定的。 例如: get(gcf,Position)

29、 ans= 360 544 560 420 get(gcf,Units) ans= pixels 表明了当前图形对象的左下角,相对于屏幕左下角的位置(wi zhi)是:向右360个象素,向上544个象素;且图形对象的宽度为560个象素点,高度为420个象素点。要注意,位置(wi zhi)向量给出的是图形本身的可画区域,它并不包括该窗口的边界、滚动条或标题条。第25页/共48页第二十六页,共48页。 Units属性的缺省值是象素,但它也可以是英寸、厘米、点或归一化坐标。象素代表了屏幕象素,即在屏幕上可表示出来的最小的矩形对象。例如,一个分辨率设置为800600的计算机显示(xinsh)区宽为80

30、0个象素,高为600个象素。点是一种打印设置标准,每一点等于1/72英寸。归一化坐标是在0到1范围内。在归一化坐标中,屏幕的左下角在0 0,右上角在1.01.0。 例如: set(gcf,Units,inches); get(gcf,Position) ans = 3.7764 5.7203 5.8907 4.4245第26页/共48页第二十七页,共48页。 set(gcf,Units,centimeters) get(gcf,Position) ans = 9.5847 14.5185 14.9511 11.2297 set(gcf,Units,normalized) get(gcf,Pos

31、ition) ans = 271.9001 411.8597 424.1339 318.5655 坐标轴对象位置Position也是4元素向量,具有同样形式 left,bottom,width,height,但它指定的是相对于它的父对象图形左下角的位置。 通常,一个子对象的Position 属性的值是相对于其父对象的位置。 计算机屏幕位置属性不是(b shi)Position,而是ScreenSize,left,bottom总是0 0,而width,height是计算机屏幕的尺寸。第27页/共48页第二十八页,共48页。8.2 图形界面设计(shj) Matlab提供了图形用户界面(以下简称G

32、UI)设计的快速开发环境(hunjng)。 在Matlab开发环境(hunjng)包括布局编辑器(Layout Editor)、排列工具(Alignment Tool)、属性观察器(Property lnspector)、对象浏览器(Object Browser)和菜单编辑器(Menu Editor)。 在Matlab命令窗口下选择菜单File | New | GUI或者键入guide激活布局编辑器。布局编辑器如图8.2所示。 第28页/共48页第二十九页,共48页。图8.2 GUI布局(bj)编辑器 第29页/共48页第三十页,共48页。在Matlab图形窗口中,运行(ynxng)菜单Edi

33、t | Figure Properties、Edit|Axes Properties、Edit|Current Object Properties 图8.3 属性(shxng)编辑器 第30页/共48页第三十一页,共48页。图形窗口的常用属性: Color属性:设置图形窗口的颜色,其属性值为红绿蓝三原色的不同配比构成的1 x 3矢量,其中每一个矢量分量的取值范围为0到1。这样(zhyng)根据不同的配比就可以获得各种各样的颜色。 Name属性: 设置图形窗口的标题栏内容,其属性值为任意字符串,图形窗口的标题即为该字符串。 NumberTitle属性:设置图形窗口标题栏的标号,其属性值为一个布尔

34、量。若设置为on,则Matlab将在每个图形窗口的标题栏内加上Figure No*:字样的编号;若设置为off,则不进行窗口标题编号。该属性的缺省设置为on。第31页/共48页第三十二页,共48页。Units属性:该属性的缺省设置为像素点,除此以外,Matlab允许用户使用一些其他的单位,如inches,centimeters,normalized(归一化单位,即0、1之间的任意(rny)小数)。Resize属性:是否可以改变图形窗口的大小,其属性值为on和off。当设置为on时,允许用户调整图形窗口大小,当设置为off时,不允许用户调整图形窗口大小。该属性的缺省设置为on。第32页/共48页

35、第三十三页,共48页。 Pointer属性:设置鼠标指针形状,Matlab图形窗口的鼠标指针可有crosshair、arrow、watch、topl、topr、botl、botr、circle、cross和fleur等几种。熟悉Windows环境的渎者,可根据需要指定不同的鼠标指针。 Visible属性:设置图形窗口是否可见,其属性值为on和off。当设置为on时,图形窗口可见,当设置为off时,图形窗口不可见。该属性的缺省设置为on。 除以上介绍的属性外,还有很多的属性,读者(dzh)可以在实践中查找帮助文档,将自己的图形窗口设置出最佳效果,并具有自己的个性特点。 第33页/共48页第三十四

36、页,共48页。 整个布局(bj)编辑器分为三个部分,在上边是菜单和工具条;在布局(bj)编辑器的左边,是元件面板,提供了多种窗口元素,包括坐标、各种按钮、文本框、列表框、选项按钮、滚动条等,基本满足建立一般图形界面的需要;在布局(bj)编辑器的右边是布局(bj)区域,也就是设计GUI的地方。第34页/共48页第三十五页,共48页。 现在(xinzi),我们着手开发一个简单的GUI应用,在所开发的GUI上有一个坐标,三个按钮。点击第一个按钮在坐标中绘制一个简单的图形;点击第二个按钮,为所绘制的图形添加栅格;点击第三个按钮,清除图形的栅格。为减少可能的意想不到的错误,希望在点击第一个按钮绘制图形之

37、后,该按钮马上变为不可用状态。 第一步,保持所有与GUI开发有关的选项为缺省状态,调整GUI页面至合适大小。根据要求,在GUI页面上放置一个坐标和三个按钮,并将坐标和按钮的大小、位置调整到认为合适,如图8.4所示。第35页/共48页第三十六页,共48页。图8.4 程序界面布局(bj)图 第36页/共48页第三十七页,共48页。 第二步,改变GUI三个按钮上面显示的文字(wnz)。 双击按钮,Matlab将启动属性观察器,找到该按钮的“String”属性,将其内容改写为“绘制图形”,如图所示。按照同样的方法,将其余的两个按钮的String属性也分别设置为“设置栅格”、“清除栅格”。 图8.5 在

38、属性(shxng)观察器中设置控件属性(shxng)第37页/共48页第三十八页,共48页。 第三步,改变GUI页面的名称。在页面中没有元件的地方双击鼠标,此时属性观察器显示的是该GUI页面的所有属性。现在,将其Name属性设置为“设置与清除栅格”。 至此,所有除编码以外的工作已经全部完成。点击菜单File | Save,填写适当(shdng)的文件名,保存刚才的工作。此时,整个GUI页面应当如图所示。 图8.6 完成(wn chng)后的GUI 第38页/共48页第三十九页,共48页。 在保存界面文件的同时,也生成了一个同名(tngmng)的M文件。在保存完成后,即自行启动M文件编辑器,并打

39、开该M文件。 functionvarargout=untitled2(varargin)%UNTITLED2M-fileforuntitled2.fig%UNTITLED2,byitself,createsanewUNTITLED2orraisestheexisting%singleton*.%H=UNTITLED2returnsthehandletoanewUNTITLED2orthehandleto%theexistingsingleton*.%UNTITLED2(CALLBACK,hObject,eventData,handles,.)callsthelocal%functionname

40、dCALLBACKinUNTITLED2.Mwiththegiveninputarguments.%UNTITLED2(Property,Value,.)createsanewUNTITLED2orraisesthe%existingsingleton*.Startingfromtheleft,propertyvaluepairsare%appliedtotheGUIbeforeuntitled2_OpeningFunctiongetscalled.An%unrecognizedpropertynameorinvalidvaluemakespropertyapplication%stop.Al

41、linputsarepassedtountitled2_OpeningFcnviavarargin.%*SeeGUIOptionsonGUIDEsToolsmenu.ChooseGUIallowsonlyone%instancetorun(singleton).%Seealso:GUIDE,GUIDATA,GUIHANDLES%Edittheabovetexttomodifytheresponsetohelpuntitled2%LastModifiedbyGUIDEv2.524-Jul-200417:30:38%Begininitializationcode-DONOTEDIT第39页/共48

42、页第四十页,共48页。gui_Singleton=1;gui_State=struct(gui_Name,mfilename,.gui_Singleton,gui_Singleton,.gui_OpeningFcn,untitled2_OpeningFcn,.gui_OutputFcn,untitled2_OutputFcn,.gui_LayoutFcn,.gui_Callback,);ifnargin&isstr(varargin1)gui_State.gui_Callback=str2func(varargin1);endifnargoutvarargout1:nargout=gui_ma

43、infcn(gui_State,varargin:);elsegui_mainfcn(gui_State,varargin:);end%Endinitializationcode-DONOTEDIT%-Executesjustbeforeuntitled2ismadevisible.functionuntitled2_OpeningFcn(hObject,eventdata,handles,varargin)%Thisfunctionhasnooutputargs,seeOutputFcn.%hObjecthandletofigure%eventdatareserved-tobedefined

44、inafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%varargincommandlineargumentstountitled2(seeVARARGIN)%Choosedefaultcommandlineoutputforuntitled2handles.output=hObject;第40页/共48页第四十一页,共48页。%Updatehandlesstructureguidata(hObject,handles);%UIWAITmakesuntitled2waitforuserrespon

45、se(seeUIRESUME)%uiwait(handles.figure1);%-Outputsfromthisfunctionarereturnedtothecommandline.functionvarargout=untitled2_OutputFcn(hObject,eventdata,handles)%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstr

46、ucturewithhandlesanduserdata(seeGUIDATA)%Getdefaultcommandlineoutputfromhandlesstructurevarargout1=handles.output;%-Executesonbuttonpressinpushbutton1.functionpushbutton1_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%han

47、dlesstructurewithhandlesanduserdata(seeGUIDATA)%-Executesonbuttonpressinpushbutton2.functionpushbutton2_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%-Executesonbuttonpr

48、essinpushbutton3.functionpushbutton3_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton3(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)第41页/共48页第四十二页,共48页。 第四步,GUI编码。在GUI页面中,在“绘制(huzh)图形”按钮上点击右键,在弹出菜单中选择“Edit Callback”,如图所

49、示。图8.7 编辑回调函数(hnsh)(事件函数(hnsh) 第42页/共48页第四十三页,共48页。 此时M文件编辑器中将高亮度显示我们想要编辑的回调函数。由于Matlab在生成M文件时,为每一个按钮都生成了一个回调函数的原型。 完成后的回调函数如下: function varargout=pushbuttonl_Callback(h,eventdata,handles,varargin) Stub for Callback Of the uicontrol handlespushbuttonl disp(pushbuttonl Callback not implemented yet) 被

50、除掉(ch dio)的代码 t=0:0.1:20; 生成绘图数据 plot(t,t.*sin(t),Parent,handles.axes1)在坐标中绘制图形 set(gcbo,Enable,off); 禁用本按钮 第43页/共48页第四十四页,共48页。 按照同样的方法为“设置栅格”按钮添加如下代码:set(handles.axes1,XGrid,On,YGrid,On); 为“清除栅格”按钮添加如下代码:set(handles.axes1,XGrid,off,YGrid,off); 最后的工作是激活GUI,检查所开发的GUI是否能实现(shxin)预期的功能。点击工具条中按钮,激活GUI,如图8.8所示;点击“绘制图形”即在坐标中绘制图形,同时该按钮禁用,如图8.9所示;点击“设置栅格”,图形设置栅格,如图8.10所示;点击“清除栅格”后,图形的栅格即消失,与预期的功能要求完全一致。第44页/共48页第四十五页,共48页。图8.8 运行(ynxng)后的GUI 第45页/共48页第四十六页,共48页。图8.9 点击绘图(hu t)按钮结果第46页/共48页第四十七页,共48页。图8.9 点击设置网格(wn )按钮结果第47页/共48页第四十八页,共48页。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!