MATLAB图形句柄.docx
- 文档编号:6649540
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:26
- 大小:118.36KB
MATLAB图形句柄.docx
《MATLAB图形句柄.docx》由会员分享,可在线阅读,更多相关《MATLAB图形句柄.docx(26页珍藏版)》请在冰豆网上搜索。
MATLAB图形句柄
第七章MATLAB图形句柄
与第四章的高层绘图指令相比,本章的内容更深入MATLAB可视化功能的内核。
编写本章的目的有两个:
(1)使读者更深入地理解高层绘图指令,从而可绘制出更精细更生动更个性的图形;
(2)使读者能利用低层图形指令和图形对象属性开发专用绘图函数。
本章在内容安排上有如下考虑:
保证概念、结构和方法的完整性:
由表及里、由浅入深的原则系统阐述句柄图形体系、图形对象、属性和操作方法。
突出要点、新点和难点:
句柄图形体系有11个基本图形对象,每个对象的属性少则20几个,多则近百个。
对此,MATLAB自带资料有详尽的文字说明。
因此,本章只对最常用的、不可或缺的、以及较难掌握的内容进行说明。
强调“可操作性”体现“范例引导概念”的本书宗旨:
针对MATLAB自带资料缺少完整、可操作应用实例的弱点,本章设计了部分算例,读者通过阅读或操作这些范例,可掌握各指令、属性之间的有机配合,从而更具体更真切地理解句柄图形。
第一节图形对象及其句柄
MATLAB语言的句柄绘图可以对图形各基本对象进行更为细腻的修饰,可以产生更为复杂的图形,而且为动态图形的制作奠定了基础。
高层绘图与底层绘图的区别
(1)高层绘图函数—是对整个图形进行操作的,图形每一部分的属性都是按缺省方式设置的,充分体现了MATLAB语言的实用性;
(2)底层绘图函数—可以定制图形,对图形的每一部分进行控制,用户可以用来开发用户界面以及各专业的专用图形。
充分体现了MATLAB语言的开发性。
一、图形对象
MATLAB的图形对象包括计算机屏幕、图形窗口、坐标轴、用户菜单、用户控件、曲线、曲面、文字、图像、光源、区域块和方框等。
系统将每一个对象按树型结构组织起来。
例:
河流断面面积计算程序(exam7_1.m)。
a=[13.0000,8.7700,8.7700,4.7700,4.2700,4.6700,4.1700,2.9700,1.7700,1.0700,1.6700,1.6700,2.5700,4.6700,3.9700,14.7000]%河底高程
x=[0,80,190,245,290,330,400,460,535,580,620,665,730,810,860,890]%起点距
Hf_1=figure('NumberTitle','off','name','断面面积计算','Position',[50,80,700,460])%图形标题
plot(x,a)%绘断面图
set(gca,'Xdir','Normal','Ydir','Normal','Box','off');
s=input('请输入水位值:
');
ss=s-a;
sa=length(a)
fori=1:
sa;
ifss(i)<0;
sss(i)=0;
else
sss(i)=ss(i);
end
end
Q=trapz(x,sss);
holdon
y=[0:
1:
890];
aa=['水位',num2str(s),'米'];
plot(y,s,'r-')
title(['所求的断面面积为',num2str(Q),'平方米'],'FontSize',14,'color','red'),
xlabel('起点距(米)')
ylabel('水深(米)')
gtext(aa)
holdoff
根:
图形对象的根,对应于计算机屏幕,根只有一个,其它所有图形对象都是根的后代。
图形窗口:
根的子代,窗口的数目不限,所有图形窗口都是根屏幕的子代,除根之外,其它对象则是窗的后代。
界面控制:
图形窗口的子代,创建用户界面控制对象,使得用户可采用鼠标在图形上作功能选择,并返回句柄。
界面菜单:
图形窗口的子代,创建用户界面菜单对象。
轴:
图形窗口的子代,创建轴对象,并返回句柄,线面字块像的父辈。
线:
轴的子代,创建线对象。
面:
轴的子代,创建块对象。
字:
轴的子代,创建字对象。
块:
轴的子代,创建块对象。
像:
轴的子代,创建图像对象。
二、图形对象句柄
MATLAB在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄(Handle)。
句柄是图形对象的唯一标识符,不同对象的句柄不可能重复和混淆。
计算机屏幕作为根对象由系统自动建立,其句柄值为0,而图形窗口对象的句柄值为一正整数,并显示在该窗口的标题栏,其他图形对象的句柄为浮点数。
MATLAB提供了若干个函数用于获取已有图形对象的句柄。
(1)句柄图形:
利用底层绘图函数,通过对对象属性的设置(HandleGraphics)与操作实现绘图;
(2)句柄图形中所有图形操作都是针对图形对象而言的;
(3)句柄图形充分体现了面向对象的程序设计;
(4)句柄图形可以随意改变MATLAB生成图形的方式;
(5)句柄图形允许你定制图形的许多特性,无论是对图形做一点小改动,还是影响所有图形输出的整体改动;
(6)句柄图形的特性高层绘图函数是无法实现的;
(7)在高层绘图中对图形对象的描述一般是省缺的或由高层绘图函数自动设置的,因此对用户来说几乎是不透明的;
(8)但句柄绘图中上述图形对象都是用户需要经常使用的,所以要作到心中有数,用句柄设置图形对象的属性。
例:
(exam7_2.m)
x=0:
2*pi/180:
2*pi;
y1=sin(2*x);
y2=cos(2*x);
h=plot(x,y1,x,y2)
l=legend('sin','cos')
>>exam7_2
h=
103.0026
3.0059
l=
104.0031
三、创建图形对象的底层函数
1、figure—创建图形窗口
调用格式:
h=figure(n)n为窗口序号。
例:
创建1号窗口,返回句柄。
h=figure
(1)
h=
1
返回值为窗口号数
2、uicontrol—图形界面控制
调用格式:
h=uicontrol(‘property’,value)
property/value确定控制类型。
3、uimenu—创建用户界面菜单
调用格式:
h=uimenu(‘property’,value)
property/value确定菜单形式。
4、axes—创建轴对象
h=axes(‘property’,,value)
定义轴对象的位置与大小。
5、line—创建线对象
h=line(x,y,z)
例:
h=lien(1:
6,1:
6)
h=
3.0066
创建线对象的同时也建立了一个唯一的句柄变量h是句柄值——符点数。
6、patch—创建块对象
h=patch(x,y,z,c)x,y,z定义多边形,c确定填充颜色。
7、surface—创建面对象
h=surface(x,y,z,c)x,y,z三维曲面坐标,c颜色矩阵。
8、image—显示图象
h=image(x);x为图像矩阵。
9、text—标注文字
h=text(x,y,’string’)
每个底层函数只能创建一个图形对象,并将它们置于适当的父辈对象中。
例:
①(exam7_3.m)
clfreset;H_mesh=mesh(peaks(20))
H_grand_parent=get(get(H_mesh,'Parent'),'Parent')
disp(' 图柄 轴柄'),disp([gcfgca])
H_mesh=
101.0039
H=
1
图柄 轴柄
1.0000100.0033
例:
②(exam7_4.m)
clfreset,t=(0:
100)/100*2*pi;H_line=line('Xdata',t,'Ydata',sin(t))
text(pi,0.8,'\fontsize{14}sin(t)')
H_c=get(get(H_line,'parent'),'children')
T=get(H_c,'Type')
H_line=
100.0035
H_c=
102.0061
100.0035
T=
'text'
'line'
第二节图形对象属性
一、属性名与属性值
1、定义
MATLAB给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值称为属性值。
2、查阅方法
line([0:
10],[0:
10])
(1)图形窗口
get(gcf)
Alphamap=[(1by64)doublearray]
BackingStore=on
CloseRequestFcn=closereq
Color=[0.8553880.8553880.855388]
Colormap=[(64by3)doublearray]
CurrentAxes=[101.006]
CurrentCharacter=
CurrentObject=[]
CurrentPoint=[00]
Dithermap=[(64by3)doublearray]
DithermapMode=manual
DoubleBuffer=off
FileName=
FixedColors=[(10by3)doublearray]
IntegerHandle=on
InvertHardcopy=on
KeyPressFcn=
MenuBar=figure
MinColormap=[64]
Name=
NextPlot=add
NumberTitle=on
PaperUnits=centimeters
PaperOrientation=portrait
PaperPosition=[0.6345176.3451720.304615.2284]
PaperPositionMode=manual
PaperSize=[20.98429.6774]
PaperType=A4
Pointer=arrow
PointerShapeCData=[(16by16)doublearray]
PointerShapeHotSpot=[11]
Position=[360514560420]
Renderer=painters
RendererMode=auto
Resize=on
ResizeFcn=
SelectionType=normal
ShareColors=on
Units=pixels
WindowButtonDownFcn=
WindowButtonMotionFcn=
WindowButtonUpFcn=
WindowStyle=normal
BeingDeleted=off
ButtonDownFcn=
Children=[101.006]
Clipping=on
CreateFcn=
DeleteFcn=
BusyAction=queue
HandleVisibility=on
HitTest=on
Interruptible=on
Parent=[0]
Selected=off
SelectionHighlight=on
Tag=
Type=figure
UIContextMenu=[]
UserData=[]
Visible=on
(2)当前轴
get(gca)
ALim=[01]
ALimMode=auto
AmbientLightColor=[111]
Box=off
CameraPosition=[5517.3205]
CameraPositionMode=auto
CameraTarget=[550]
CameraTargetMode=auto
CameraUpVector=[010]
CameraUpVectorMode=auto
CameraViewAngle=[6.60861]
CameraViewAngleMode=auto
CLim=[01]
CLimMode=auto
Color=[111]
CurrentPoint=[(2by3)doublearray]
ColorOrder=[(7by3)doublearray]
DataAspectRatio=[551]
DataAspectRatioMode=auto
DrawMode=normal
FontAngle=normal
FontName=Helvetica
FontSize=[10]
FontUnits=points
FontWeight=normal
GridLineStyle=:
Layer=bottom
LineStyleOrder=-
LineWidth=[0.5]
MinorGridLineStyle=:
NextPlot=replace
PlotBoxAspectRatio=[111]
PlotBoxAspectRatioMode=auto
Projection=orthographic
Position=[0.130.110.7750.815]
TickLength=[0.010.025]
TickDir=in
TickDirMode=auto
Title=[102.007]
Units=normalized
View=[090]
XColor=[000]
XDir=normal
XGrid=off
XLabel=[103.005]
XAxisLocation=bottom
XLim=[010]
XLimMode=auto
XMinorGrid=off
XMinorTick=off
XScale=linear
XTick=[(1by11)doublearray]
XTickLabel=[(11by2)chararray]
XTickLabelMode=auto
XTickMode=auto
YColor=[000]
YDir=normal
YGrid=off
YLabel=[104.004]
YAxisLocation=left
YLim=[010]
YLimMode=auto
YMinorGrid=off
YMinorTick=off
YScale=linear
YTick=[(1by11)doublearray]
YTickLabel=[(11by2)chararray]
YTickLabelMode=auto
YTickMode=auto
ZColor=[000]
ZDir=normal
ZGrid=off
ZLabel=[105.004]
ZLim=[-11]
ZLimMode=auto
ZMinorGrid=off
ZMinorTick=off
ZScale=linear
ZTick=[-101]
ZTickLabel=
ZTickLabelMode=auto
ZTickMode=auto
BeingDeleted=off
ButtonDownFcn=
Children=[3.0083]
Clipping=on
CreateFcn=
DeleteFcn=
BusyAction=queue
HandleVisibility=on
HitTest=on
Interruptible=on
Parent=[1]
Selected=off
SelectionHighlight=on
Tag=
Type=axes
UIContextMenu=[]
UserData=[]
Visible=on
二、属性的操作
1、属性值
(1)窗口属性值
set(gcf)
Alphamap
BackingStore:
[{on}|off]
CloseRequestFcn:
string-or-functionhandle-or-cellarray
Color
Colormap
CurrentAxes
CurrentCharacter
CurrentObject
CurrentPoint
Dithermap
DithermapMode:
[auto|{manual}]
DoubleBuffer:
[on|{off}]
FileName
IntegerHandle:
[{on}|off]
InvertHardcopy:
[{on}|off]
KeyPressFcn:
string-or-functionhandle-or-cellarray
MenuBar:
[none|{figure}]
MinColormap
Name
NextPlot:
[{add}|replace|replacechildren]
NumberTitle:
[{on}|off]
PaperUnits:
[{inches}|centimeters|normalized|points]
PaperOrientation:
[{portrait}|landscape|rotated]
PaperPosition
PaperPositionMode:
[auto|{manual}]
PaperSize
PaperType:
[{usletter}|uslegal|A0|A1|A2|A3|A4|A5|B0|B1|B2|B3|B4|B5|arch-A|arch-B|arch-C|arch-D|arch-E|A|B|C|D|E|tabloid|
Pointer:
[crosshair|fullcrosshair|{arrow}|ibeam|watch|topl|topr|botl|botr|left|top|right|bottom|circle|cross|fleur|custom]
PointerShapeCData
PointerShapeHotSpot
Position
Renderer:
[{painters}|zbuffer|OpenGL]
RendererMode:
[{auto}|manual]
Resize:
[{on}|off]
ResizeFcn:
string-or-functionhandle-or-cellarray
SelectionType:
[normal|open|alt|extend]
ShareColors:
[{on}|off]
Units:
[inches|centimeters|normalized|points|{pixels}|characters]
WindowButtonDownFcn:
string-or-functionhandle-or-cellarray
WindowButtonMotionFcn:
string-or-functionhandle-or-cellarray
WindowButtonUpFcn:
string-or-functionhandle-or-cellarray
WindowStyle:
[{normal}|modal]
ButtonDownFcn:
string-or-functionhandle-or-cellarray
Children
Clipping:
[{on}|off]
CreateFcn:
string-or-functionhandle-or-cellarray
DeleteFcn:
string-or-functionhandle-or-cellarray
BusyAction:
[{queue}|cancel]
HandleVisibility:
[{on}|callback|off]
HitTest:
[{on}|off]
Interruptible:
[{on}|off]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 图形 句柄