China-pub.com 下载 第14章高级图形 MATLAB的图形系统是面向对象的,也就是说图形的输出,如曲线,是建立图形对象。 通常用户不必去关心这些高级MATLAB命令包含的对象。然而有时为了调整对象也要用一些 低级的MATLAB命令。 MATLAB中介绍了图形用户界面(GU的应用,如单选按钮、滑标和菜单。利用这些用户 能够很容易地进行图形控制。 在MATLAB中加入一系列的图片就可以创建出动画来,利用这些动画可以做一些有趣的演示。 14.1图的结构 一个图形是由许多的图形对象组成的,这些对象是以层次顺序保存的。举一个例子来说 明它们之间的关系。 ■例14.1 用不同线型绘制图形的例程。 clear; x=0.1:0.1:4*pi: 号生成向量x。 yl=sin(x); 号生成y1值。 y2=sin(x) ./x: 号生成y2值。 figure; 各创建一个新窗口。 subp1ot(1,2,1): 告定义第一个子图区域。 plot(x,yl); 号用实线画曲线。 subp1ot(1,2,2): 号定义第二个子图区域。 p1ot(x,y2,'*’): 号用*号画曲线。 上述命令在图形窗口的两个子域内画出了关于x的两个函数y1和y2的图形。结果如图14-1 所示。 图14-1用不同线型绘制的图形 ■
下载 第1 4章 高 级 图 形 M AT L A B的图形系统是面向对象的,也就是说图形的输出,如曲线,是建立图形对象。 通常用户不必去关心这些高级 M AT L A B命令包含的对象。然而有时为了调整对象也要用一些 低级的M AT L A B命令。 M AT L A B中介绍了图形用户界面 ( G U I )的应用,如单选按钮、滑标和菜单。利用这些用户 能够很容易地进行图形控制。 在M AT L A B中加入一系列的图片就可以创建出动画来,利用这些动画可以做一些有趣的演示。 14.1 图的结构 一个图形是由许多的图形对象组成的,这些对象是以层次顺序保存的。举一个例子来说 明它们之间的关系。 ■ 例1 4 . 1 用不同线型绘制图形的例程。 c l e a r ; x = 0 . 1 : 0 . 1 : 4 * p i ; % 生成向量x。 y 1 = s i n ( x ) ; % 生成y 1值。 y2=sin(x) ./x; % 生成y 2值。 f i g u r e ; % 创建一个新窗口。 subplot(1, 2, 1); % 定义第一个子图区域。 plot(x, y1); % 用实线画曲线。 subplot(1, 2, 2); % 定义第二个子图区域。 plot(x, y2, ’*’) ; % 用‘*’号画曲线。 上述命令在图形窗口的两个子域内画出了关于 x的两个函数y 1和y 2的图形。结果如图1 4 - 1 所示。 图14-1 用不同线型绘制的图形 ■
China-pub.coM 第14章高级图形 249 下载 个图形由安排在一个层次结构上的五个图形对象组成。 首先有一个窗口,这是一个图形对象。然后由两个轴对象来定 figure 义相应的坐标轴。这些都可以用subp1ot命令来完成。最后, 用p1ot命令来创建两个线条对象。例14.1中的对象层次结构在 axes axes 2 图14-2中给出。 对于每一个对象都可以修改它的一些属性。例如,可以改 变图形窗口的位置和图形对象的背景色。对于一个轴对象可以 line 1 line 2 改变它在图形区域内的刻度大小和位置。线条对象可以变得更 细,改变成另一种颜色,另一种线型等等。 图14-2对象层次结构 由于是层次结构,所以某个对象改变时,会影响到这个结构中它以下的所有对象。如果 使用鼠标改变图形对象的屏幕位置,线条和轴对象也会跟着变。但是如果改变右边轴对象的 轴刻度,那么只影响这个轴上的线条。 图14-2中还少一个对象:根对象。它是所有图形对象的根,也就是整个层次结构的根。 在创建对象的同时可以直接修改一些对象的属性。在画y2图形时,‘*号表示用星号来画 曲线而不是用实线。调用subplot可以规定图形区域在窗口的位置。然而还有许多属性只能 用在后面描述的st命令来改变。下面的例子修改了上例中图形的部分属性。 ■例14.2 %在上例中,改变左边子图区域的位置和第2个子图的x轴坐标 clear; x=0.1:0.1:4*p1; y1 sin(x); y2 sin(x)./x; fg figure; %创建窗口和图句柄 r1=subp1ot(1,2,1); %创建子图和轴句柄 11=p1ot(x,y1); %创建线条和线条句柄 r2=subp1ot(1,2,2); 12=p1ot(x,y2,’*); disp('The previous example'); pause; set(r1,'Position',[0.10.10.30.3]);%改变位置 set(11,'LineWidth',5); %加粗线条 set(r2,'XTick',[1411]); %改变x轴 set(12,'LineStyle','+'); %改变线型 pause; delete(fg); %删除窗口
一个图形由安排在一个层次结构上的五个图形对象组成。 首先有一个窗口,这是一个图形对象。然后由两个轴对象来定 义相应的坐标轴。这些都可以用 s u b p l o t命令来完成。最后, 用p l o t命令来创建两个线条对象。例1 4 . 1中的对象层次结构在 图1 4 - 2中给出。 对于每一个对象都可以修改它的一些属性。例如,可以改 变图形窗口的位置和图形对象的背景色。对于一个轴对象可以 改变它在图形区域内的刻度大小和位置。线条对象可以变得更 细,改变成另一种颜色,另一种线型等等。 由于是层次结构,所以某个对象改变时,会影响到这个结构中它以下的所有对象。如果 使用鼠标改变图形对象的屏幕位置,线条和轴对象也会跟着变。但是如果改变右边轴对象的 轴刻度,那么只影响这个轴上的线条。 图1 4 - 2中还少一个对象:根对象。它是所有图形对象的根,也就是整个层次结构的根。 在创建对象的同时可以直接修改一些对象的属性。在画 y 2图形时,‘ * ’号表示用星号来画 曲线而不是用实线。调用 s u b p l o t可以规定图形区域在窗口的位置。然而还有许多属性只能 用在后面描述的s e t命令来改变。下面的例子修改了上例中图形的部分属性。 ■ 例1 4 . 2 第1 4章 高 级 图 形 2 4 9 图14-2 对象层次结构 % 在上例中,改变左边子图区域的位置和第2个子图的X轴坐标 % 创建窗口和图句柄 % 创建子图和轴句柄 % 创建线条和线条句柄 % 改变位置 % 加粗线条 % 改变X轴 % 改变线型 % 删除窗口 下载
250 MATLAB5手册 China-pub.com 下载 在使用命令figure、subplot和p1ot时定义一个变量名来创建对象的句柄或者标识。 通过使用句柄可以用st命令来修改对象属性。在本例中修改对象的一个属性,改变了第1个子 图的位置和第2个子图中的x轴刻度值。现在得到的窗口如图14-3所示。 04 图14-3对图14-1修改一些属性后的图形 ■ 14.2图形对象 MATLAB5.2中的各种对象都列在表14-1中。 在图14-4中给出了对象的层次结构图。 在图14-5中给出了不同图形对象的例子。 父对象影响它所有的子对象,这些子对象又影响它们的子对象,以此类推。结果是轴对 象会影响像对象,但不影响用户界面控制。 根据表14-1可知,根对象的句柄值是零,而图形对象的句柄值是整数,其他对象则用浮 点值作为句柄值。 画一个对象,可以使用和对象名字的相同低级命令。如画一线条,可以用命令lie。 对象的属性有两类: ·属性,用来决定对象的显示和保存的数据。 ·方法,用来决定在对对象操作时调用什么样的函数,如当创建或者删除对象时,或当 用户点击它们时。 一些属性有缺省值,如果没有特殊说明,就是用这些缺省值。 有一些属性是用来规定对象色彩的,它们以RGB三元组的形式给出,也就是说,用一个有 三个元素的向量rgb](0≤r,g,b≤1)来表示颜色中的红、绿和蓝色,例如,用[1,0,0]表示红色。 也可以用预定义在MATLAB中表示颜色的字符串来代替RGB三元组,如black'和blue'。 在nelpdesk中的句柄图形对象给出各种不同类型对象的详细说明。MATLAB手册《使 用MATLAB图形和用MATLAB建立GUI》也可得到相关的信息。 表14-1图形对象 对 父代 描 述 root 屏幕是一个根对象。所有其他的图形对象都是根的子 对象。根对象的句柄值是零
在使用命令f i g u r e、s u b p l o t和p l o t时定义一个变量名来创建对象的句柄或者标识。 通过使用句柄可以用s e t命令来修改对象属性。在本例中修改对象的一个属性,改变了第 1个子 图的位置和第2个子图中的x轴刻度值。现在得到的窗口如图 1 4 - 3所示。 图14-3 对图1 4 - 1修改一些属性后的图形 14.2 图形对象 M ATLAB 5.2中的各种对象都列在表1 4 - 1中。 在图1 4 - 4中给出了对象的层次结构图。 在图1 4 - 5中给出了不同图形对象的例子。 父对象影响它所有的子对象,这些子对象又影响它们的子对象,以此类推。结果是轴对 象会影响像对象,但不影响用户界面控制。 根据表1 4 - 1可知,根对象的句柄值是零,而图形对象的句柄值是整数,其他对象则用浮 点值作为句柄值。 画一个对象,可以使用和对象名字的相同低级命令。如画一线条,可以用命令 l i n e。 对象的属性有两类: • 属性,用来决定对象的显示和保存的数据。 • 方法,用来决定在对对象操作时调用什么样的函数,如当创建或者删除对象时,或当 用户点击它们时。 一些属性有缺省值,如果没有特殊说明,就是用这些缺省值。 有一些属性是用来规定对象色彩的,它们以 R G B三元组的形式给出,也就是说,用一个有 三个元素的向量[r g b] ( 0≤r, g, b≤1)来表示颜色中的红、绿和蓝色,例如,用[1, 0, 0]表示红色。 也可以用预定义在M AT L A B中表示颜色的字符串来代替R G B三元组,如‘b l a c k’和‘b l u e’。 在h e l p d e s k中的句柄图形对象给出各种不同类型对象的详细说明。 M AT L A B手册《使 用M AT L A B图形和用M AT L A B建立G U I》也可得到相关的信息。 表14-1 图形对象 对 象 父 代 描 述 root — 屏幕是一个根对象。所有其他的图形对象都是根的子 对象。根对象的句柄值是零 2 5 0 M ATLAB 5 手册 下载 ■
China-pub.com 第14章高级图形 251 下载 (续) 对象 父代 描述 figure root 屏幕上的窗口是一个图形对象,对象的句柄值是整数, 在窗口的标题中给出 axes figure 轴对象在窗口中定义一个图形区域。可以用来描述子对 象的位置和方向 uicontrol figure 用户界面控制。当用户用鼠标在控制对象上点击时, MATLAB会完成一个相应规定的任务 uimenu figure 创建一个窗口菜单,用户用这些菜单能够控制程序 uicontext-menu figure 创建一个图形对象的快捷菜单。也就是当用户点击图形 对象时会显示出菜单来 image axes 用当前的色图矩阵定义一个图像。图像可以有自己的色图 line axes 用plot、plot3、contour和contour3创建一些简单的图形 patch axes 创建补片对象 surface axes 输入定义一个有四个角的曲面,可以用实线或内插颜色 来绘制,或者作为一个网格 text axes 字符串,它的位置由它的父对象一轴对象来指定 light axes 定义多边形或者曲面的光照 root figure uicontext- uicontrol axes uimenu menu image line urface patch text light 图14-4图形对象层次结构图 Figure Line Axes 2D Text Surface Axes 3D Patch 图14-5不同类型图形对象
(续) 对 象 父 代 描 述 f i g u r e r o o t 定屏幕上的窗口是一个图形对象,对象的句柄值是整数, 在窗口的标题中给出 a x e s f i g u r e 定轴对象在窗口中定义一个图形区域。可以用来描述子对 象的位置和方向 u i c o n t r o l f i g u r e 定用户界面控制。当用户用鼠标在控制对象上点击时, M AT L A B会完成一个相应规定的任务 u i m e n u f i g u r e 定创建一个窗口菜单,用户用这些菜单能够控制程序 u i c o n t e x t - m e n u f i g u r e 定创建一个图形对象的快捷菜单。也就是当用户点击图形 对象时会显示出菜单来 i m a g e a x e s 定用当前的色图矩阵定义一个图像。图像可以有自己的色图 l i n e a x e s 定用p l o t、p l o t 3、c o n t o u r和c o n t o u r 3创建一些简单的图形 p a t c h a x e s 定创建补片对象 s u r f a c e a x e s 定输入定义一个有四个角的曲面,可以用实线或内插颜色 来绘制,或者作为一个网格 t e x t a x e s 定字符串,它的位置由它的父对象—轴对象来指定 l i g h t a x e s 定定义多边形或者曲面的光照 图14-4 图形对象层次结构图 图14-5 不同类型图形对象 第1 4章 高 级 图 形 2 5 1 下载
252 MATLAB5手册 China-pub.com 下载 14.2.1通用函数 MATLAB有两个基本命令get和set用来处理图形对象。通过使用它们,可以给出和修 改所有对象的属性值。 ■例14.3 (a)创建一个图形窗口,它的句柄是gfp: gfp=figure; 先查看窗口使用的单位类型: get(gfp,'units') ans pixels 现在来改变窗口的大小和位置: set(gfp,'Position',[100 500 400 400]) 窗口的左下角移动到点(100,500)处,大小设置为400×400像素点。 (b)有些高级命令,如p1ot可以直接改变这些属性值。例如,例14.1中的曲面可以这样来画: plot(x,y1,'LineWidth',5); plot(x,y2,'LineStyle','+');or plot(x,y2,'+'); (c)如果想知道在set和gcf之间有哪些指针可以挑选使用:见命令集155。 set(gcf,'Pointer') crosshair I fullcrosshair I farrow}I ibeam I watch I topl I topr I botl I botr I left I top I right I bottom I circle I cross I fleur I custom 命令集154 通用对象函数 set(h,prstr,alt, 对向量h指向的对象设置其属性prstr为值alt,在它们之后 ··.) 还可以有几个属性。 set(h,a) 对向指向的对象设置其属性值。参数是一个结构,结构中的 域名是对象中可改变的属性名,域的值是赋予相应属性的新值。 set (h,pn,pv, 对向量h指向的对象设置其属性值。参数pn是一个包含可 ...) 改变的属性名的细胞向量,pV是一个包含设置新值的细胞 向量。在它们之后还可以有几个属性的细胞向量。 set(h,pn,pv) 对h(i)指向的对象设置名为pnU)属性的值为pv(i,j)。参数h 是一个包含对象句柄的向量,p是一个包含属性名的细胞 向量,pv是一个包含有m×n个值的细胞矩阵,m是h的长 度,n是pn的长度。这个变量可以单独地设置对象属性。 set(h) 将句柄h的对象所有可改变的属性返回在一个结构中,结 构的域名是这些属性的名字,域值是相应的属性值。 set(0,'Default') 检查对象属性的缺省值。返回一个结构,域名为
14.2.1 通用函数 M AT L A B有两个基本命令 g e t和s e t用来处理图形对象。通过使用它们,可以给出和修 改所有对象的属性值。 ■ 例1 4 . 3 (a) 创建一个图形窗口,它的句柄是 g f p: g f p = f i g u r e ; 先查看窗口使用的单位类型: 现在来改变窗口的大小和位置: 窗口的左下角移动到点( 1 0 0,5 0 0 )处,大小设置为4 0 0×4 0 0像素点。 (b) 有些高级命令,如p l o t可以直接改变这些属性值。例如,例1 4 . 1中的曲面可以这样来画: (c) 如果想知道在s e t和g c f之间有哪些指针可以挑选使用;见命令集 1 5 5。 命令集1 5 4 通用对象函数 s e t ( h , p r s t r , a l t , 对向量h指向的对象设置其属性p r s t r为值a l t,在它们之后 . . . ) 还可以有几个属性。 s e t ( h , a ) 对向量h指向的对象设置其属性值。参数a是一个结构,结构中的 域名是对象中可改变的属性名,域的值是赋予相应属性的新值。 s e t ( h , p n , p v , 对向量h指向的对象设置其属性值。参数 p n是一个包含可 . . . ) 改变的属性名的细胞向量, p v是一个包含设置新值的细胞 向量。在它们之后还可以有几个属性的细胞向量。 s e t ( h , p n , p v ) 对h(i)指向的对象设置名为p n(j)属性的值为p v(i, j)。参数h 是一个包含对象句柄的向量, p n是一个包含属性名的细胞 向量,p v是一个包含有 m×n个值的细胞矩阵, m是h的长 度,n是p n的长度。这个变量可以单独地设置对象属性。 s e t ( h ) 将句柄h的对象所有可改变的属性返回在一个结构中,结 构的域名是这些属性的名字,域值是相应的属性值。 s e t ( 0 ,’D e f a u l t’) 检 查 对 象 属 性 的 缺 省 值 。 返 回 一 个 结 构 , 域 名 为 2 5 2 M ATLAB 5 手册 下载 ■