MATLAB图形句柄

上传人:一*** 文档编号:243000481 上传时间:2024-09-13 格式:PPT 页数:51 大小:1.24MB
返回 下载 相关 举报
MATLAB图形句柄_第1页
第1页 / 共51页
MATLAB图形句柄_第2页
第2页 / 共51页
MATLAB图形句柄_第3页
第3页 / 共51页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,9,章,MATLAB,图形句柄,9.1,图形对象及其句柄,9.2,图形对象属性,9.3,图形对象的创建,9.1,图形对象及其句柄,绘图函数将不同的曲线或曲面绘制在图形窗口中,而图形窗口由不同的对象(如坐标轴、曲线、曲面或文字等)组成的图形界面。,Matlab,给每个图形对象分配一个标识符,称为句柄。以后可以通过该句柄对该图形对象的属性进行设置,也可以获取有关的属性值,从而能够更加自主地绘制各种图形。,1,图形对象,MATLAB,的图形对象包括计算机屏幕、图形窗口、坐标轴、用户菜单、用户控件、曲线、曲面、文字、图像、光源、区域块和方框等。系统将每一个对象按树型结构组织起来。,每个具体图形不必包含每个对象,但每个图形必须具备根屏幕和图形窗口。,2,图形对象句柄,MATLAB,在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄,(Handle),。句柄是图形对象的唯一标识符,不同对象的句柄不可能重复和混淆。,计算机屏幕作为根对象由系统自动建立,其句柄值为,0,,而,图形窗口对象的句柄值为一正整数,并显示在该窗口的标题栏,其他图形对象的句柄为浮点数,。,MATLAB,提供了若干个函数用于获取已有图形对象的句柄,如:,figure,,,line,,,text,,,surface,,,axes,(,xlabel,,,ylabel,,,zlabel,,,title,),常用图形对象的句柄函数,gcf,获取当前图形窗口的句柄,gca,获取当前坐标轴的句柄,例:绘制曲线并查看有关对象的句柄, x=0:0.1*pi:2*pi;, y=,sin(x,);, h1=,gcf,h1 =,1, h2=,gca,h2 =,151.0057,9.2,图形对象属性,1,属性名与属性值,MATLAB,给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值称为属性值。,2,属性的操作,set,函数的调用格式为:,set(,句柄,属性名,1,,属性值,1,,属性名,2,,属性值,2,,,),其中句柄用于指明要操作的图形对象。,如果在调用,set,函数时省略全部属性名和属性值,则将显示出句柄所有的允许属性。,set(0),set(gcf,),set(gca,),例:绘制二维曲线,通过选择不同的选项可以设置曲线的颜色、线型和数据点的标记符号。,x=0:pi/10:2*pi;,h=,plot(x,sin(x,);,pause,set(h,color,r,linestyle,:,marker,P,);,获取句柄的属性值,get,函数:,get(,句柄,属性名,),如果在调用,get,函数时省略属性名,则将返回句柄的所有属性值,例:,x=0:pi/10:2*pi;,h=,plot(x,sin(x,);,set(h,color,r,linestyle,:,marker,P,);,get(h,marker,),结果:,ans,=,pentagram,9.3,图形对象的创建,9.3.1,图形窗口对象,建立图形窗口对象使用,figure,函数,其调用格式为:,句柄变量,=figure(,属性名,1,,属性值,1,,属性名,2,,属性值,2,,,),MATLAB,通过对属性的操作来改变图形窗口的形式。也可以使用,figure,函数按,MATLAB,缺省的属性值建立图形窗口:,figure,或 句柄变量,=figure,要关闭图形窗口,使用,close,函数,其调用格式为:,close(,窗口句柄,),另外,,close all,命令可以关闭所有的图形窗口,,clf,命令则是清除当前图形窗口的内容,但不关闭窗口。,例:,x=0:pi/10:2*pi;,h=,plot(x,sin(x,);,set(h,color,r,linestyle,:,marker,P,);,clf,h1=figure,h2=figure,close(h2),运行,结果,MATLAB,为每个图形窗口提供了很多属性。这些属性及其取值控制着图形窗口对象。常用属性如下:,MenuBar,属性、,Name,属性、,NumberTitle,属性、,Resize,属性、,Position,属性、,Units,属性、,Color,属性、,Pointer,属性、,KeyPressFcn,(,键盘键按下响应,),、,WindowButtonDownFcn,(,鼠标键按下响应,),、,WindowButtonMotionFcn,(,鼠标移动响应,),及,WindowButtonUpFcn,(,鼠标键释放响应,),等。,MenuBar,属性:该属性的取值可以是,figure,(缺省值)或,none,,用来控制图形窗口是否应该具有菜单条。如果它的属性为,none,,则表示该图形窗口没有菜单条。这是用户可以采用,uimenu,函数来加入自己的菜单条。如果属性值为,figure,,则该窗口将保持图形窗口默认的菜单条。这时也可以采用,uimenu,函数在原默认的图形窗口菜单后面添加新的菜单项。,Name,属性:该属性的取值为字符串,为图形的标题,它的缺省值为空。标题形式为:,figure 1,:,标题,。,MumberTitle,属性:取值为,on,(缺省值)或,off,。决定图形窗口中是否以,Figure n,为标题的前缀。,Resize,属性:取值为,on,(缺省值)或,off,。决定着在图形窗口建立后可否用鼠标改变该窗口的大小。,Position,属性:该属性的取值由,4,个元素构成,a b c d,。决定图形的位置与大小。其中,a,b,分别为窗口左下角的横纵坐标值;,c,d,分别为窗口的宽度和高度。它们的单位由,units,属性决定。,Units,属性:该属性的取值为下列字符串的一种:,piexl,(像素,为缺省值,),、,normalized,(相对单位)、,inches,(英寸)、,centimeters,(厘米)、,points,(磅)。,菜单设计函数,建立用户菜单 要建立用户菜单可用,uimenu(user,interfaces menu),函数,因其调用方法不同,该函数可以用于建立一级菜单项和子菜单项。 建立一级菜单项的函数调用格式为: 一级菜单项句柄,=,uimenu,(,图形窗口句柄,属性名,1,,属性值,1,,属性名,2,,属性值,2,,,),建立子菜单项的函数调用格式为: 子菜单项句柄,=,uimenu,(,一级菜单项句柄,属性名,1,,属性值,1,,属性名,2,,属性值,2,,,),例,:,建立一个图形窗口。该图形窗口没有菜单条,标题名称为“我的图形窗口”,起始于屏幕左下角、宽度和高度分别为,450,像素点和,250,像素点,背景颜色为黑色,且当用户从键盘按下任意一个键时,将在该图形窗口绘制出正弦曲线。并完成如图所示的菜单功能。,x=0:pi/20:2*pi;,y=,sin(x,);,figure(Menubar, none, Name, ,我的图形窗口, position,1 1 450 250, ,NumberTitle, off, ,color,k,keypressfcn,h,=,plot(x,y,) ;,h0=,uimenu(gcf, label , ,我的菜单, );,h1=uimenu(h0, label , ,背景色,-,蓝色, , callback , ,set(gcf,Color,blue,) ); %,制作下拉菜单项,blue,h2=uimenu(h0, label , ,背景色,-,红色, , callback , ,set(gcf,Color,red,) ); %,制作下拉菜单,Red,h3=uimenu(h0, label , ,显示主菜单, , callback , ,set(gcf,Menubar,figure,) );,h4=uimenu(h0, label , ,隐藏主菜单, , callback , ,set(gcf,Menubar,none,) );,h5=uimenu(h0, label , ,曲线颜色,-,红色, , callback , ,set(h,color,r,) );,菜单设计另外实例,例:建立系统菜单。菜单条中含有,3,个菜单项:,Plot,、,Option,和,Quit,。,Plot,中有,Sine Wave,和,Cosine Wave,两个子菜单项,分别控制在本图形窗口画出正弦和余弦曲线。,Option,菜单项的内容中,Grid on,和,Grid off,控制给坐标轴加网格线,,Box on,和,Box off,控制给坐标轴加边框,而且这,4,项只有在画有曲线时才是可选的。,Window Color,控制图形窗口背景颜色。,Quit,控制是否退出系统。,screen=get(0,ScreenSize);,W=screen(3);H=screen(4);,figure(Color,1,1,1,Position,0.2*H,0.2*H,0.5*W,0.3*H, Name,图形演示系,NumberTitle,off,MenuBar,none,);,%,定义,Plot,菜单项,hplot,=,uimenu(gcf,Label,&Plot,);,uimenu(hplot,Label,Sine,Wave,Callback, ,t=-pi:pi/20:pi;,plot(t,sin(t);, ,set(hgon,Enable,on,);,.,set(hgoff,Enable,on);,set(hbon,Enable,on,);,.,set(hboff,Enable,on,););,uimenu(hplot,Label,Cosine,Wave,Callback,.,t=-pi:pi/20:pi;,plot(t,cos(t);, ,set(hgon,Enable,on,);,.,set(hgoff,Enable,on);,set(hbon,Enable,on,);,.,set(hboff,Enable,on,););,%,定义,Option,菜单项,hoption,=,uimenu(gcf,Label,&Option,);,hgon,=,uimenu(hoption,Label,&Grid,on,Callback,grid,on,Enable,off,);,hgoff,=,uimenu(hoption,Label,&Grid,off,Callback,grid,off,Enable,off,);,hbon,=,uimenu(hoption,Label,&Box,on,separator,on,Callback,box,on,Enable,off,);,hboff,=,uimenu(hoption,Label,&Box,off,Callback,box,off,Enable,off,);,hwincor,=,uimenu(hoption,Label,&Window,Color);,uimenu(hwincor,Label,);,uimenu(hwincor,Label,);,uimenu(hwincor,Label,);,uimenu(hwincor,Label,);,%,定义,Quit,菜单项,hquit,=,uimenu(gcf,Label,&Quit,);,uimenu(hquit,Label,&,退出,Callback,close(gcf,);,快捷菜单,快捷菜单是用鼠标右键单击某对象时在屏幕上弹出的菜单。这种菜单出现的位置是不固定的,而且总是和某个图形对象相联系。在,MATLAB,中,可以使用,uicontextmenu,函数和图形对象的,UIContextMenu,属性来建立快捷菜单,具体步骤为:,(1),利用,uicontextmenu,函数建立快捷菜单。,(2),利用,uimenu,函数为快捷菜单建立菜单项。,(3),利用,set,函数将该快捷菜单和某图形对象联系起来。,例:绘制曲线,y=2sin(5x)sin,x,,并建立一个与之相联系的快捷菜单,用以控制曲线的线型和曲线宽度。,x=0:pi/100:2*pi,y=2*sin(5*x).*,sin(x,);,h1=,plot(x,y,);,hc,=,uicontextmenu,hls,=,uimenu(hc,label,线型,),hlw,=,uimenu(hc,label,线宽,),uimenu(hls,label,虚线,callback,set(h1,linestyle,:););,uimenu(hls,label,实线,callback,set(h1,linestyle,-););,uimenu(hlw,label,加宽,callback,set(h1,linewidth,5););,uimenu(hlw,label,变细,callback,set(h1,linewidth,1););,set(h1,uicontextmenu,hc),例:,x=0:pi/20:2*pi;,y=,sin(x,);,h0=,plot(x,y,);,h1=,uicontextmenu,;,xx=uimenu(h1,Label,线型,);,xk,=uimenu(h1,Label,线宽,);,ys,=uimenu(h1,Label,颜色,);,uimenu(xx,Label,虚线,Callback,set(h0,LineStyle,:););,uimenu(xx,Label,实线,Callback,set(h0,LineStyle,-););,uimenu(xx,Label,点划线,Callback,set(h0,LineStyle,-.););,uimenu(xx,Label,双划线,Callback,set(h0,LineStyle,-););,uimenu(xk,Label,宽,Callback,set(h0,LineWidth,5););,uimenu(xk,Label,窄,Callback,set(h0,LineWidth,0.5););,uimenu(ys,Label,蓝色,Callback,set(h0,Color,b););,uimenu(ys,Label,绿色,Callback,set(h0,Color,g););,uimenu(ys,Label,红色,Callback,set(h0,Color,r););,uimenu(ys,Label,青色,Callback,set(h0,LineColor,c););,uimenu(ys,Label,品红色,Callback,set(h0,Color,m););,uimenu(ys,Label,黄色,Callback,set(h0,Color,y););,uimenu(ys,Label,黑色,Callback,set(h0,Color,k););,uimenu(ys,Label,白色,Callback,set(h0,Color,w););,set(h0,UIContextMenu,h1);,9.3.2,坐标轴对象,建立坐标轴对象使用,axes,函数,其调用格式为:,句柄变量,=axes(,属性名,1,,属性值,1,,属性名,2,,属性值,2,,,),Axes,常用属性:,Box,属性:该属性的取值为,on,或,off,(缺省值),它决定坐标轴是否带有边框。,GridLineStyle,属性:该属性的取值可以是,:,(缺省值)、,-.,、,-,、或,none,。该属性定义网格线的线型。,Position,属性:该属性的取值由,4,个元素构成,a b c d,。这个向量在图形窗口中决定一个矩形区域,坐标轴位于其中。该矩形区域的左下角相对于图形窗口左下角的坐标为,(a ,b),,矩形的高度和宽度为,c,和,d,。它们的单位由,units,属性决定。,Units,属性:该属性的取值为下列字符串的一种:,normalized,(相对单位,为缺省值)、,inches,(英寸)、,centimeters,(厘米)、,points,(磅)。,Title,属性:该属性的取值是坐标轴标题文字对象,句柄,。可以通过该属性对坐标轴标题文字对象进行操作。如:,h=,get(gca, Title); %,获得标题文字对象句柄,set(h,color,r,); %,设置标题文字颜色,xlabel,、,ylabel,、,zlabel,、属性:,3,种属性的取值分别是,x,y,z,轴的说明文字,句柄,。其操作与,title,句柄相同。如:,h=,get(gca,xlabel,);,set(h, string, value of x axis);,Xlim,、,YLim,、,ZLim,属性。,3,种属性的取值都是具有两个元素的数值向量。,3,中属性分别定义各坐标轴的上下限,缺省值为,0,1,。以前介绍的,axis,函数实际上是对这些属性的直接赋值。,XScale,、,YScale,、,ZScale,属性。,3,种属性的取值都是,Linear(,缺省值,),或,log,,这些属性定义各坐标轴的刻度类型。,View,属性。该属性的取值是两个元素的数值向量,定义视点方向。,clc,x=0:pi/20:2*pi;,y=,sin(x,);,plot(x,y,),h=,get(gca, title);,set(h,string,abc,color,r,BackgroundColor,g,FontAngle,italic,Fontsize,50),h1=,get(gca,xlabel,);,set(h1,string,x,color,b,Fontsize,30),h2=,get(gca,ylabel,);,set(h2,string,y,color,k,Fontsize,40),%,set(h,),%set(h1),例:利用坐标轴对象实现图形窗口的任意分割。,利用,axes,函数可以在不影响图形窗口上其他坐标轴的前提下建立一个新的坐标轴,从而实现图形窗口的任意分割。,clf,x=0:pi/10:2*pi,y=,sin(x,);,axes(position,0.2,0.2,0.2,0.7);,plot(y,x,);,grid on,set(gca,gridlinestyle,-);,axes(position,0.4,0.2,0.5,0.5);,t=0:pi/100:20*pi,x=,sin(t,);,y=,cos(t,);,z=t.*,sin(t,).*,cos(t,);,plot3(x,y,z),axes(position,0.55,0.6,0.25,0.3);,X,Y=meshgrid(-8:0.5:8),Z=sin(sqrt(X.2+Y.2)./sqrt(X.2+Y.2+eps);,mesh(X,Y,Z,),仔细体会下面所有语句的作用:,clc,clear,h0=get(0,screensize) %,获得屏幕尺寸,x=0:0.05:10;,y=,sin(x,);,plot(x,y,),f1=figure(posi,h0(3)/4 h0(4)/4 h0(3)/2 h0(4)/2); %,居中,plot(x,y-2),%hold on,%,plot(x,y,r,-*),%close %,体会用法,关闭当前窗口,%,get(gcf,posi,),f2=figure(posi,1 1 h0(3)/2 h0(4)/2);,%h2=get(f2,posi),axes(position,0.05 0.5 0.9 0.4) %,其单位是相对单位,最大值为,1,plot(x,y,r,-*),%axes(position,0.05 0.05 0.9 0.4),%,以下看局部图像,%x=4.5:0.05:5;,%y=,sin(x,);,%,plot(x,y,r,-*),%close(f1),%close,%close all,9.3.3,曲线对象,建立曲线对象使用,line,函数,其调用格式为:,句柄变量,=,line(x,y,z,属性名,1,,属性值,1,,属性名,2,,属性值,2,,,),其中对,x,y,z,的解释与高层曲线函数,plot,和,plot3,等一样。,每个曲线对象也具有很多属性。除公共属性外,其他常用属性如下:,Color,属性、,LineStyle,属性、,LineWidth,属性、,Marker,属性、,MarkerSize,属性等。,Color,属性:该属性的取值是代表某颜色的字符或,RGB,值。定义曲线的颜色。,Linestyle,属性:定义线型。,Linewidth,属性:定义线宽,缺省值为,0.5,磅。,Marker,属性:定义数据点标记符号,缺省值为,none,。,Markersize,属性:定义数据点符号的大小,缺省值为,6,磅。,Xdata,、,Ydata,、,zdata,属性:,3,种属性的取值都是数值向量或矩阵,分别代表曲线对象的,3,个坐标轴数据。,例:利用曲线对象绘制曲线。,t=0:pi/20:2*pi;,y1=,sin(t,);,y2=,cos(t,);,figh,=figure(position,30,100,800,350);,axes(Gridlinestyle,-.,xlim,0,2*pi,ylim,-1,1);,line(xdata,t,ydata,y1,linewidth,2);,line(t,y2);,grid on,以上程序运行等同于:,t=0:pi/20:2*pi;,y1=,sin(t,);,y2=,cos(t,);,figh,=figure(position,30,100,800,350);,axes(Gridlinestyle,-.,xlim,0,2*pi,ylim,-1,1);,h1=plot(t,y1),set(h1,linewidth,2,color,k),hold on,plot(t,y2);,grid on,注:,line(ydata,y,xdata,x,)=,line(xdata,x,ydata,y,)=,line(x,y,),plot (,xdata,x,ydata,y,),不正确。,9.3.4,文字对象,使用,text,函数可以根据指定位置和属性添加文字说明,并保存句柄。该函数调用格式为:,句柄变量,=text,(,x,y,z,说明文字,属性名,1,,属性值,1,),其中,x,y,z,为位置坐标。说明文字中除使用标准的,ASCII,字符外,还可使用,LaTeX,格式的控制字符。,h=text(0.5,0.5,gamma=rho)2),文字对象的常用属性如下:,Color,属性、,string,属性、,Fontsize,属性、,Rotation,属性,color,属性:文字对象颜色。,String,属性:文字标注的内容。,Fontsize,属性:定义文字的大小,缺省值为,10,磅。,Rotation,属性:该属性的取值是数值量,缺省值为,0,。它定义文字对象的旋转角度,取正值表示逆时针方向旋转,取负值表示顺时针方向旋转。,例,利用曲线对象绘制曲线并利用文字对象完成标注。,x=-pi:0.1:pi,y1=,sin(x,);,y2=,cos(x,);,figure(position,30,100,800,358);,h=line(x,y1,linestyle,:,color,g),line(x,y2,linestyle,-,color,b),xlabel(-pileqthetaleqpi,),ylabel(sin,(theta),text(-pi/4,sin(-pi/4),leftarrow sin(-pidiv4),fontsize,20),set(h,color,r,linewidth,2),9.3.5,曲面对象,建立曲面对象使用,surface,函数,其调用格式为:,句柄变量,=,surface(x,y,z,属性名,1,,属性值,1,,属性名,2,,属性值,2,,,),其中对,x,y,z,的解释与高层曲面函数,mesh,和,surf,等一样,其余的解释与前面介绍过的,figure,和,axes,等函数类似。,常用属性如下:,EdgeColor,属性、,FaceColor,属性、,LineStyle,属性、,LineWidth,属性、,Marker,属性、,MarkerSize,属性等。,Edgecolor,属性:该属性的取值是代表某颜色的字符或,RGB,值,还可以是,flat,、,interp,或,none,,缺省为黑色。定义曲面网格线的颜色或着色方式。其中,Flat,用相应顶点的颜色单色显示边界,,interp,用两端顶点的颜色的插值过度颜色显示边界:,Facecolor,属性,:,该属性的取值是代表某颜色的字符或,RGB,值,定义曲面网格片的颜色或着色方式。还可以是,flat,、,interp,或,none,。其中,Flat,用相应顶点的颜色单色显示,,interp,用两端顶点的颜色的插值过度颜色显示。,Linestyle,属性:定义曲线网格线的线型。,Linewidth,属性:定义网格线的线宽,缺省值为,0.5,磅。,Marker,属性:定义曲面数据点标记符号,缺省值为,none,。,Markersize,属性:定义标记符号的大小,缺省值为,6,磅。,Xdata,、,ydata,、,zdata,属性:,3,种属性的取值都是数值向量或矩阵,分别代表曲面对象的,3,个坐标轴数据。,例,利用曲面对象绘制三维曲面,z=,sin(x,),。,x=0:pi/20:2*pi;,X,Y=,meshgrid(x,);,Z=,sin(X,);,axes(view,-37.5,80),hs,=,surface(X,Y,Z,facecolor,g,edgecolor,r,);,grid on,set(get(gca,xlabel),string,x,-axis);,set(get(gca,ylabel),string,y,-axis);,set(get(gca,zlabel),string,z,-axis);,title(mesh,-surf),pause,set(hs,facecolor,interp,),
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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