ch6 matlab图形句柄_第1页
ch6 matlab图形句柄_第2页
ch6 matlab图形句柄_第3页
ch6 matlab图形句柄_第4页
ch6 matlab图形句柄_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Matlab图形句柄,一、图形对象及其句柄,1.图形对象,MATLAB把构成图形的各个基本要素称为图形对象。这些对象包括计算机屏幕、图形窗口(Figure)、坐标轴(Axes)、用户菜单(Uimenu)、用户控件(Uicontrol)、曲线(Line)、曲面(Surface)、文字(Text)、图像(image)、光源(Light)、区域块(Patch)和方框(Rectangle)。系统将每一个对象按树型结构组织起来。每个图形对象都可以被独立地操作,图形对象树结构,Matlab图形句柄,每一个图形组件视为一个对象。,Matlab图形句柄,Matlab图形句柄,2.图形对象句柄,MATLAB在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄(Handle)。句柄是图形对象的唯一标识符。,MATLAB提供了4个用于获取已有图形对象句柄的函数:,gco获取最近被单击的图形对象的句柄(getcurrentobject)。,gcf获取当前图形窗口的句柄(getcurrentfigure)。,gca获取当前坐标轴的句柄(getcurrentaxis)。,findobj按照指定的属性来获取图形对象的句柄(findobject)。,3、图形对象属性,1)属性名与属性值,Matlab给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值成为属性值。例如,LineStyle是曲线对象的一个属性名,它的值决定着线型,取值可以是-、:、-.、-或none。,2)属性的操作,set函数设定对象的某属性,调用格式为:,set(句柄,属性名1,属性值1,属性名2,属性值2,),get函数取得对象的某属性,调用格式为:,V=get(句柄,属性名),Matlab图形句柄,t=0:0.1:4*pi;y=exp(-t/5).*sin(t);h=plot(t,y);%h为曲线的句柄set(h,Linewidth,3);%将曲线宽度改为3set(h,Marker,o);%将曲线的线标改成小圆圈set(h,MarkerSize,20);%将线标的大小改成20,set范例:,Matlab图形句柄,get范例:,get(h,LineWidth)%取得曲线宽度get(h,Color)%取得曲线颜色get(0,screensize)%取得屏幕的尺寸,x=0:pi/20:2*pi;y=sin(x);z=cos(x);plot(x,y,r,x,z,g);h=findobj(gca,color,1,0,0);pauseset(h,color,0,0,1,linewidth,3);pausedelete(h),findobj范例:,Matlab图形句柄,注:在使用get函数时若省略属性名,则返回该句柄的所有属性,对set这样使用时,则返回该句柄所有属性的可能设置方式。,Matlab图形句柄,3、对象的公共属性,不同的图形对象有不同的属性,但下列的属性是所有图形对象所共有的。,1)Chidren属性:该属性的取值是当前对象所有子对象句柄组成的一个向量。,2)Parent属性:该属性的取值是当前对象父对象的句柄,图形窗口对象的Parent属性总是0。,3)Tag属性:该属性的取值是字符串,它相当于当前对象的诨名,可从根对象中通过寻找诨名找到该对象对应的句柄。,4)Type属性:表示该对象的类型,该属性是不可改变的。,Matlab图形句柄,4)UserData属性:该属性的缺省取值是空矩阵,在程序设计中,可以使用set命令将较重要的数据放在里面,在需要的时候,使用get将其取出来,以达到传递数据的作用。,5)Visible属性:该属性的取值为on(缺省)是或off,确定在图形动态变化时,变化过程是否可见。,6)ButtonDownFcn属性:该属性的取值为字符串,其为一m文件名或程序,鼠标单击相应的对象时,就执行该m文件或程序。,7)CreateFcn属性:该属性的取值为字符串,其为一m文件名或程序,当创建该对象时,就自动执行该m文件或程序。,Matlab图形句柄,8)DeleteFcn属性:该属性的取值为字符串,其为一m文件名或程序,当取消该对象时,就自动执行该m文件或程序。,closex=0:pi/20:2*pi;y=sin(x);z=cos(x);plot(x,y,r,x,z,g);h1=get(gca,Children);fork=1:size(h1)ifget(h1(k),color)=1,0,0h1g=h1(k);endendset(h1g,ButtonDownFcn,set(h1g,color,0,0,1,linewidth,3);,4、图形对象的创建,1.图形窗口对象,建立图形窗口对象使用figure函数。调用该函数的命令形式为:,句柄变量=figure(属性名1,属性值1,属性名2,属性值2,),Matlab通过对属性操作来改变图形窗口形式,也可以用figure命令直接建立缺省图形窗口,命令为,figure或句柄变量=figure,也可以用figure(n),(n=1,2,)来建立多个图形窗口,使用close(窗口句柄)可以关闭句柄对应的窗口,如要关闭所有的窗口,使用closeall,Matlab图形句柄,MATLAB为每个图形窗口提供了很多属性。这些属性及其取值控制着图形窗口对象。除公共属性外,其他常用属性有:,h=figure(color,1,1,0,menubar,none,name,我的窗口),Matlab图形句柄,例,1)MenuBar属性:取值为figure(缺省)和none。设置窗口有五菜单条。,2)Name属性:取值为任何字符串。缺省为空,为窗口设置标题,一般情况为figureNo1:字符串。,4)Color属性:无缺省值,为窗口设置背景颜色,3)NumberTitle属性:取值为on(缺省)和off。设置窗口标题是否显示figureNo1字符串。,5)Position属性:取值形式为:xmin,ymin,w,h确定窗口位置和大小。,6)Units属性:确定窗口使用的长度单位,取值分别为:pixel(缺省),normalized,inches,centimeters和points。,7)Resize属性:取值为on(缺省)和off,设定窗口能否改变大小。,8)NextPlot属性:取值为new,add(缺省),replace,replacechildren,设定在窗口上添加对象的方式,9)对键盘和鼠标响应的属性:KeyPressFcn(按键盘的响应),WindowButtonDownFcn(按鼠标的响应),WindowButtonMotionFcn(移动鼠标的响应),WindowButtonUpFcn(释放鼠标的响应),其属性值为一个m文件或程序段,对键盘和除表操作的反应,例:编写程序建立图形窗口,要求满足:,1)窗口宽和高为屏幕宽和高的一半,窗口右下角在屏幕宽和高的1/4处;窗口背景为蓝色。,2)无菜单栏,标题名称为“图形窗口演示”,无图形窗口编号。,3)单击鼠标打印出正弦曲线。,x=0:0.05:2*pi;y=sin(x);s=get(0,screensize);h=s(4);w=s(3);h1=figure(color,0,0,1,position,0.25*w,0.25*h,.0.5*w,0.5*h,name,图形窗口演示,numbertitle,.off,menubar,none,windowbuttondownfcn,.plot(x,y);axis(0,2*pi,-1,1);,x=0:0.05:2*pi;y=sin(x);h1=figure(units,normalized,color,1,0,1,position,0.4,0.25,0.5,0.5,name,图形窗口演示,numbertitle,.off,menubar,none,windowbuttondownfcn,.plot(x,y);axis(0,2*pi,-1,1),keypressfcn,closeall);,另一种实现上述窗口的方法,大家研究哪些地方改动了!,例:分别在4个不同的图形窗口绘制出正弦、余弦、正切、余切曲线。要求先建立一个图形窗口并绘图,然后每关闭一个再建立下一个,直到建立第4个窗口并绘图。,x=linspace(0,2*pi,60);y=sin(x);z=cos(x);t=tan(x);ct=1./(t+eps);%命令组待用C4=figure(Name,cotangent(x),NumberTitle,.off);plot(x,ct);axis(0,2*pi,-40,40);C3=figure(Name,tangent(x),DeleteFcn,C4,.NumberTitle,off);plot(x,t);axis(0,2*pi,-40,40);C2=figure(Name,cos(x),DeleteFcn,C3,.NumberTitle,off);plot(x,z);axis(0,2*pi,-1,1);%先创建1个图形窗口并绘制曲线figure(Name,sin(x),DeleteFcn,C2,NumberTitle,off);plot(x,y);axis(0,2*pi,-1,1);,程序如下:,2.坐标轴对象,建立坐标轴对象使用axes函数,调用它的命令形式为:,句柄变量=axes(属性名1,属性值1,属性名2,属性值2,),MATLAB为每个坐标轴对象提供了很多属性。除公共属性外,还有其他常用属性。,3)Position属性:取值形式为:xmin,ymin,w,h确定在窗口中的位置和大小。,2)Units属性:确定坐标轴窗口使用的长度单位,取值分别为:pixel,normalized(缺省),inches,centimeters和points。,1)Box属性:该属性取值是on或off(缺省),决定坐标轴是否带边框。,例4.27利用坐标轴对象实现图形窗口的任意分割。程序如下,x=linspace(0,2*pi,20);y=sin(x);axes(Posi,0.2,0.2,0.2,0.7,gridlinestyle,-.);title(sin(x)-4);plot(y,x);gridon;axes(Posi,0.4,0.5,0.2,0.1);stairs(x,y);title(sin(x)-2);axes(Posi,0.55,0.6,0.25,0.3);stem(x,y);title(sin(x)-3);axes(Posi,0.55,0.2,0.25,0.3);stem(x,y);title(sin(x)-4);,8)XScale,YScale,ZScale属性:取值都是linear(缺省)或log,其定义了个坐标刻度的类型。,4)GridLineStyle属性:取值可以是-、:(缺省)、-.、-或none,定义了网格线的类型。,5)Title属性:属性值是坐标轴对象的标题的句柄,可以通过该句柄对标题文字的属性进行操作。,例:plot(sin(1:.2:10);h=get(gca,title);set(h,string,sin(x)函数,color,1,1,1),6)XLabel,YLabel,ZLabel属性:取值分别是x,y,z轴说明文之句柄,操作与title相同。,7)XLim,YLim,ZLim属性:取值都是两个元素的向量分别定义了三个坐标轴的上下限,缺省值为0,1。,8)View属性:取值为两个元素,其定义了视点的方向。,shgt=0:pi/100:20*pi;x=sin(t);y=cos(t);z=t.*x.*y;h=plot3(x,y,z);fori=1:10:360set(gca,view,i,45,XLim,-2,2,.YLim,-2,2,ZLim,-40,40,visible,off);drawnow;end,3.曲线对象,建立曲线对象使用line函数,调用它的命令形式为:,句柄变量=line(x,y,z,属性名1,属性值1,属性名2,属性值2,),其中对x,y,z的解释与高层曲线函数plot和plot3等一样,其余的解释与前面介绍过的figure和axes函数类似。,每个曲线对象也具有很多属性。除公共属性外,还有其他常用属性如下。,Color;LineStyle;LineWidth;Marker;MakerSize;XData、YData、ZData等属性。,例:同一坐标系可生成多个坐标轴,figurex1=1:0.1:2*pi;y1=sin(x1)*100;x2=(1:0.1:2*pi)*3;y2=cos(x2);hl1=line(x1,y1,color,r);gridonax1=gca;set(ax1,Xcolor,r,Ycolor,r)ax2=axes(position,get(ax1,position);set(ax2,Xcolor,b,Ycolor,b)set(ax2,XaxisLocation,top)set(ax2,yaxisLocation,right,color,none)hl2=line(x2,y2,color,k,Parent,ax2);gridon,为了使两个轴的栅格线对齐,可使用下面的程序:,x2=(1:0.1:2*pi)*3;y2=cos(x2);hl1=line(x1,y1,color,r);gridonax1=gca;set(ax1,Xcolor,r,Ycolor,r)xm=get(ax1,Xlim);ym=get(ax1,Ylim);xi=(xm(2)-xm(1)/6;yi=(ym(2)-ym(1)/10;set(ax1,XTick,xm(1):xi:xm(2);set(ax1,yTick,ym(1):yi:ym(2);,为了使两个轴的栅格线对齐,可使用下面的程序:,转下页,ax2=axes(position,get(ax1,position);set(ax2,Xcolor,b,Ycolor,b)set(ax2,XaxisLocation,top)set(ax2,yaxisLocation,right,color,none)hl2=line(x2,y2,color,k,Parent,ax2);xn=get(ax2,Xlim);yn=get(ax2,Ylim);xj=(xn(2)-xn(1)/6;yj=(yn(2)-yn(1)/10;set(ax2,XTick,xn(1):xj:xn(2);set(ax2,yTick,yn(1):yj:yn(2);,续上页,4.文字对象,使用text函数可以根据指定位置和属性值添加文字说明,并保存句柄。调用该函数的命令形式为:,句柄变量=text(x,y,z,说明文字,属性名1,属性值1,属性名2,属性值2,),其中说明文字中除使用标准的ASCII字符外,还可使用LATEX格式的控制字符。,除公共属性外,文字对象其他常用属性还有:,h=text(0.5,0.5,gamma=rho2),Color;String;Interpreter;FontSize;Rotation等属性。,例:利用曲线对象完成例4.5。,程序如下:,x=(0:pi/100:2*pi);y1=2*exp(-0.5*x)*1,-1;y2=2*exp(-0.5*x).*sin(2*pi*x);x1=(0:12)/2;y3=2*exp(-0.5*x1).*sin(2*pi*x1);line(x,y1,LineStyle,:,color,g);line(x,y2,LineStyle,-,color,b);line(x1,y3,LineStyle,none,Marker,p,color,r);title(曲线及其包络线);xlabel(independentvariableX);ylabel(independentvariableY);text(2.8,0.55,2e-0.5x,FontSize,12);text(0.45,0.55,y=2e-0.5xsin(2pix),FontSize,12);text(1.4,0.1,离散数据点);legend(包络线,包络线,曲线y,离散数据点);,5.曲面对象,建立曲面对象使用surface函数,调用它的命令形式为:,句柄变量=surface(x,y,z,属性名1,属性值1,属性名2,属性值2,),其中对x,y,z的解释与高层曲面函数mesh和surf等一样,其余的解释与前面介绍过的figure和axes等函数类似。,每个曲面对象也具有很多属性。除公共属性外,还有其他常用属性。,例4.29利用曲面对象绘制三维曲面z=sin(y)cos(x)。程序如下:,x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x);axes(view,-37.5,30);hs=surface(x,y,z,FaceColor,y,EdgeColor,flat);gridon;xlabel(x-axis),ylabel(y-axis),zlabel(z-axis);title(mesh-surf);pause;set(hs,FaceColor,flat);,对象属性的继承操作,对象属性的继承操作是通过父代对象,设置省缺对象属性来实现的。,父代句柄属性中设置省缺值后,所有子代对象均可以继承该属性的省缺值。,Dfault+对象名称+对象属性,属性省缺值的描述结构为:,如:DefaultFigureColor图形窗口的颜色,DefaultAxesAspac

温馨提示

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

评论

0/150

提交评论