王国利信息科学与技术学院中山大学
http://human-robot.sysu.edu.cn
Matlab计算与仿真技术第十一讲,Matlab绘图 -II
http://human-robot.sysu.edu.cn/course
Matlab计算与仿真
第十讲回顾
- 综合练习
Matlab绘图 -II
- 图形对象与句柄
- 综合练习第十一讲提纲
Matlab计算与仿真第十讲回顾
综合练习,顺序方式实现函数图形显示
-求解:创建文件 graph1.m
% Script file graph1,
% Graph of the function y = x/(1+x^2).
for n=1:2:5
n10 = 10*n;
x = linspace(-2,2,n10);
y = x./(1+x.^2);
211 x?
Matlab计算与仿真第十讲回顾 (续 )
plot(x,y,'r')
title(sprintf('Graph %g,Plot based…
upon n = %g points.',(n+1)/2,n10))
axis([-2,2,-.8,.8])
xlabel('x')
ylabel('y')
grid
pause(3)
end
Matlab计算与仿真第八讲回顾 (续 )
Matlab计算与仿真第十讲回顾 (续 )
综合练习 (续 ):并发方式实现函数图形显示
- 求解:创建文件 graph2.m
% Script file graph2,
% Several plots of the function
y = x/(1+x^2)
% in the same window,
k = 0;
for n=1:3:10
n10 = 10*n;
Matlab计算与仿真第十讲回顾 (续 )
x = linspace(-2,2,n10);
y =x./(1+x.^2);
k = k+1;
subplot(2,2,k)
plot(x,y,'r')
Matlab计算与仿真第十讲回顾 (续 )
title(sprintf('Graph %g,Plot based…
upon n = %g points.',k,n10))
xlabel('x')
ylabel('y')
axis([-2,2,-.8,.8])
grid
pause(3);
end
Matlab计算与仿真第八讲回顾 (续 )
Matlab计算与仿真
Matlab绘图 -II
句柄图形概述句柄图形 ( Handle Graphics)
是一种面象对象的绘图系统提供创建计算机图形所必需的各种软件直接创建线、文字、网线、面也可以用于生成图形用户界面已讲解的绘图函数 (plot/mesh…)(high-level)
通过调用各种句柄图形指令 (low-level)
实现各种绘图功能
Matlab计算与仿真
Matlab绘图 (续 )
- 句柄图形对象 (Handle graphics object)
用于数据可视和界面制作的基本绘图要素
- 图形对象 (共计 13类 )使用方式核心图形对象:高层绘图函数及复合绘图调用实现特定的绘图功能复合图形对象:将核心图形对象装配组合起来实现更为方便的界面包括图 /组 /标注对象
Matlab计算与仿真
Matlab绘图 (续 )
- Matlab图形与对象句柄
Matlab图形都由若干不同对象构成根对象 (根屏幕 )和图形窗是必须的句柄 (Handle),存取对象唯一规范识别符不同对象的句柄不可能重复和混淆根对象 (屏幕 )的句柄总是数字 0
图形窗 (Figure Windows)的句柄总是正整数用来标识图形窗的序号其余对象的句柄则是双精度浮点数
Matlab计算与仿真
Matlab绘图 (续 )
句柄图形功能和关系
Matlab图形 =图形对象以递阶结构组成
UI Controls
(UI 控制元件 )
Images
(图像 )
Lines
(线段 )
Patches
(贴片 )
Surfaces
(曲面 )
Texts
(文字 )
Lighting
(光照 )
Axes
(图轴 )
UI menus
(UI 菜单 )
Figures
(图形视窗 )
Root
(桌面 )
Matlab计算与仿真
Matlab绘图 (续 )
对象的属性 (Properties)
- 定义和刻画对象的外貌和性状
- 由两部分组成:属性名和属性值二元对
(Property-Name,Property-Value)
属性名和属性值总是成对出现的属性名是描述的英文词组字符串第一个字母大写 /单词间没有空格例如 ’ LineStyle’,’ ColorMap’ 等通过编辑修改属性值可以改变图形
Matlab计算与仿真
Matlab绘图 (续 )
- 属性诠释援引属性名时 MATLAB允许不分字母大小写属性名不必写全
’ lines’’LineStyle’
不需要对每个属性加以定义缺省属性值为 Factory-defined
图形对象都由同名的指令创建根对象除外
Matlab计算与仿真
Matlab绘图 (续 )
- 基本 图形对象指令 (函数 )
创建图形窗口对象,基本格式
>> h=figure(n) % n为窗口编号创建轴对象,基本格式
>> h=axes(‘position’,[left,bottom,
width,height])
% 定义坐标框的位置和尺寸创建线 /面元素,基本格式
>> h= line/surface(x,y,z)
% 绘制 x,y,z对应的曲线
Matlab计算与仿真
Matlab绘图 (续 )
- 图形对象指令 (续 )
创建矩形对象,基本格式
>> h=rectangle(’position’,[x,y,w,h],
’curvature’,[xc,yc])
% 绘制指定 位置 姿态 的矩形创建文本对象,基本格式
>> h=text(x,y,’string’)
% 在指定位置显示字符串内容
Matlab计算与仿真
Matlab绘图 (续 )
- 图形对象指令使用实例
[x,y] = meshgrid([-2:.4:2]);
Z = x.*exp(-x.^2-y.^2);
fh = figure('Position',[350 275 400
300],'Color','w');
ah = axes('Color',[.8,8,8],'XTick',
[-2 -1 0 1 2],'YTick',
[-2 -1 0 1 2]);
Matlab计算与仿真
Matlab绘图 (续 )
- 图形对象指令使用实例 (续 )
sh = surface('XData',x,'YData',
y,'ZData',Z,'FaceColor',
get(ah,'Color')+.1,
'EdgeColor','k',
'Marker','o',
'MarkerFaceColor',
[.5 1,85]);
Matlab计算与仿真
Matlab绘图 (续 )
-2 -1 0 1 2
-2
-1
0
1
2
Matlab计算与仿真
Matlab绘图 (续 )
view(3)
-2
-1
0
1
2
-2
-1
0
1
2
- 0,5
0
0,5
Matlab计算与仿真
Matlab绘图 (续 )
- 对象句柄的获取基本方法从图形创建指令获得句柄追溯法获取图柄当前对象句柄的获取根据对象特性获取句柄根据对象标签获取句柄
Matlab计算与仿真
Matlab绘图 (续 )
- 对象句柄的获取 (续 )
图形创建方式
>> H_GC= GraphicCommand(…)
% GraphicCommand 图形创建函数
% H_GC 所创建图形句柄例如,
>> h = figure; % 返回图形窗口句柄
>> [x,y,z] = peaks;
>> [c,h] = contour(x,y,z);
c 轮廓线数据矩阵
Matlab计算与仿真
Matlab绘图 (续 )
- 对象句柄的获取 (续 )
追溯 方式
>> H_pa= get(H_known,’Parent’)
或者
>> H_ch= get(H_known,’Children’)
% H_known 已知对象句柄
% ‘Parent’/’Children’ 父 /子关系设定
% H_pa/H_ch 获取父 /子对象句柄
Matlab计算与仿真
Matlab绘图 (续 )
- 对象句柄的获取 (续 )
实例,
>> [x,y,z] = peaks;
>> [c,h] = contour(x,y,z);
>> child_handles = get(h,'Children');
>> get(child_handles,‘Type’) % 查询类型
ans =
'patch'
'patch‘ …
Matlab计算与仿真
Matlab绘图 (续 )
-3 -2 -1 0 1 2 3
-3
-2
-1
0
1
2
3
Matlab计算与仿真第十二讲预告,Matlab绘图 -III
( 2008年 04月 14日)
结束语