MATLAB图形句柄
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章 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)
for i=1:sa;
if ss(i)<0;
sss(i)=0;
else
sss(i)=ss(i);
end
end
Q=trapz(x,sss);
hold on
y=[0:1:890];
aa=['水位',num2str(s),'米'];
plot(y,s,'r-')
title(['所求的断面面积为',num2str(Q),'平方米'],'FontSize',14,'color','red'),
xlabel('起点距(米)')
ylabel('水深(米)')
gtext(aa)
hold off
根:图形对象的根,对应于计算机屏幕,根只有一个,其它所有图形对象都是根的后代。
图形窗口: 根的子代,窗口的数目不限,所有图形窗口都是根屏幕的子代,除根之外,其它对象则是窗的后代。
界面控制:图形窗口的子代,创建用户界面控制对象,使得用户可采用鼠标在图形上作功能选择,并返回句柄。
界面菜单: 图形窗口的子代,创建用户界面菜单对象。
轴:图形窗口的子代,创建轴对象,并返回句柄,线面字块像的父辈。
线:轴的子代,创建线对象。
面:轴的子代,创建块对象。
字:轴的子代,创建字对象。
块:轴的子代,创建块对象。
像:轴的子代,创建图像对象。
二、图形对象句柄
MATLAB在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄(Handle)。句柄是图形对象的唯一标识符,不同对象的句柄不可能重复和混淆。
计算机屏幕作为根对象由系统自动建立,其句柄值为0,而图形窗口对象的句柄值为一正整数,并显示在该窗口的标题栏,其他图形对象的句柄为浮点数。MATLAB提供了若干个函数用于获取已有图形对象的句柄。
(1)句柄图形:利用底层绘图函数,通过对对象属性的设置(Handle Graphics)与操作实现绘图;
(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号窗口,返回句柄。