功能 创建一个新的图形对象。图形对象为在屏幕上单独的窗口,在窗口中可以输出图形。
用法 figure
用缺省的属性值创建一个新的图形对象。
figure('PropertyName',PropertyValue,
…
)
对指定的属性
PropertyName用指定的属性值PropertyValue(属性名与属性值成对出现)创建一个新的图形窗口,对于那些没有指定的属性,则用缺省值。属性名与有效的属性值见下表。
figure(h) 1.
若
h
为一个已经存在的图形的句柄,则
figure
(h)使由
h
标记的图形成为当前图形,使它可见,且在屏幕上把它显示到所有图形之前。当前图形为图像输出的地方。
2. 若
h
不是已经存在图形的句柄,但是为一整数,则该命令生成一图形窗口,同时把该窗口的句柄赋值为
h
;若
h
不是一图形窗口的句柄,也不是一整数,则返回一错误信息。
h = figure(
…
)
返回图形窗口对象的句柄给
h
。
表
7-10
有效值:
crosshair
、
arrow
、
topr
、
watch
、
topl
、
botl
、
botr
、
circle
、
cross
、
fleur
、
left
、
right
、
top
、
fullcrosshair
、
bottom
、
ibeam
、
custom
缺省值:
arrow
例
7-46
>>scrsz = get(0,'ScreenSize');
>>figure('Position',[1 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2])
执行上面的语句,会在屏幕的左上角生成一没有任何符号的窗口。
命令2 line
功能 生成线(
line
)对象。命令
line
在当前坐标轴中生成一个线对象。用户可以指定线的颜色,宽度,类型和标记符号等其他特性。
命令
line
有两种形式:
1
.自动循环使用颜色和类型。当用户用非正式语法来指定矩阵坐标数据:
line(X,Y,Z),Matlab
将循环使用由坐标轴
ColorOrder和LineStyle指定的颜色顺序和类型顺序。
2
.纯粹低级操作。当用户用属性名和属性值调用命令
line
:
line(‘XData’,x,’YData’,y,’ZData’,z)
Matlab
将在当前用缺省的颜色(参见命令
colordef
的使用)画出线对象。注意一点的是,用户不能在命令
line
的低级形式中使用矩阵数据。
用法 line(X,Y)
在当前的坐标轴中画出由向量
x
和
y
定义的线条。若
x
与
y
为同型的矩阵,则对于
x
,
y
的每一列画出一线条。
line(X,Y,Z)
在三维空间中画出由
x
,
y
,
z
定义的线条。
line(X,Y,Z,'PropertyName',PropertyValue,
…
)
画出由参数
x
,
y
,
z
确定的线条,其中对指定属性
PropertyName设置为PropertyValue,其他没有指定属性用缺省值。属性LineStyle和Marker参见命令
plot
。
line('PropertyName',PropertyValue,
…
)
对属性用相应的输入参数来设置而画出线条。这是命令
line
的低级使用形式,此时不接受矩阵参数。除了该情形,其他形式都接受矩阵参数。
h = line(
…
)
返回每一条线的线对象对应的句柄向量。
表
7-11
>>t = 0:pi/20:2*pi;
>>hline1 = plot(t,exp(t).*sin(t),'k');
>>hline2 = line(t+.06,exp(t).*sin(t),'LineWidth',4,'Color',[.8 .8 .8]);
>>set(gca,'Children',[hline1 hline2])
生成图形为图
7-46
。
图
7-46
命令
line
画的函数图
例
7-48
生成随机直线图:
>>line(rand(4,2),rand(4,2),rand(4,1))
>>line(rand(1,4),rand(1,4),rand(1,4))
>>line(rand(4,1),rand(4,1),rand(4,1))
>>line(rand(2,4),rand(2,4),rand(1,4))
>>line(rand(4,2),rand(4,2),rand(4,1))
生成图形为图
7-47
。
命令3 patch
功能 生成补片图形对象。该命令为生成补片图形对象的低级图形函数。补片为一个或多个多边形,多边形的顶点为坐标中的点。用户可以指定补片的颜色与光照模式。
用法 patch(X,Y,C)
在当前坐标轴中增加二维带填充模式的补片。参量
X,Y确定顶点的位置。若X,Y为矩阵(同型或不同型),系统按列生成多个多边形。若
x
,
y
没有定义一封闭的多边形,则命令自动地将多边形封闭。参量
x
与
y
可以定义凹的或自身交叉的多边形。可是,一个不可分隔的补片的边界自身交叉,则不能完整填充。在这种情况下,最好是将多边形分解成几个小的、自身没有交叉的多边形。参量
c
指定每一补片的颜色,它可以为简单的
ColorSpec,每面一颜色或每一顶点一颜色。若
c
为三维列向量,它将被认为是一直接指定的
RGB颜色。
patch(X,Y,Z,C)
生成三维的补片对象。
patch(FV)
用结构
FV生成一补片。结构FV包含这些域名
vertices
,
faces
和可选的
facevertecdata
,这些域名对应于补片的
Vertices属性、Faces属性、FaceVertexCData属性。
patch(…,C,'PropertyName',PropertyValue
…
)
在二维(X,Y)或三维(X,Y,Z)空间中对补片指定的属性PropertyName设置为PropertyValue。
patch('PropertyName',PropertyValue
…
)
对所有指定的多个属性
PropertyName设置为相应的值PropertyValue。该命令形式可以使用户免除颜色的指定,因为系统将使用缺省的面颜色和边界颜色,除非用户准确地对属性FaceColor与EdgeColor进行设置。该命令形式也允许用户通过对属性Faces与Vertices的设置来代替
x-
,
y-
与
z-
轴的输入。
handle = patch(
…
)
返回命令
patch
生成的补片对象句柄。
说明 函数
patch
不象其他的高级的区域生成函数,例如函数
fill
或
area
,它没有检测图形窗口与坐标轴的属性
NextPlot的设置情形。它只是简单地在当前坐标轴中添加补片对象而已。
有两种指定颜色的补片属性名:
(
1
)
Cdata——当指定
x-
,
y-
与
z-
轴坐标
(XData,YData,ZData)时使用;
(
2
)
FaceVertexCData——当指定多边形的顶点与连接矩阵时使用。
以上两个属性接受颜色数据作为索引颜色或者是真颜色(RGB)。其中索引颜色数据 能代表当前色图的直接索引或者代表映射到整个色图的线性数据的比例数值。
命令4 surface
功能 生成面对象。该命令是生成面图形对象的低级函数。面对象为由矩阵元素的A(I,
j
)所在的行下标
I为
x-
坐标,所在的列下标
j
为
y-
坐标,元素值为
z-
坐标确定的点生成的空间多边形。
用法 surface(Z)
画出由矩阵
z
确定的曲面,其中
z
为定义在一几何矩形区域上的单值函数。
surface(Z,C)
画出颜色由
c
指定的、面由
z
指定的空间曲面。
surface(X,Y,Z)
曲面由参数
x
,
y
,
z
确定,颜色参数
c=z
,因此颜色能恰当地反映曲面的高度。
surface(X,Y,Z,C)
曲面由参数
x
,
y
,
z
确定,颜色由参数
c
确定。
Surface(x,y,Z) 参数
x
与
y
为向量,若
[m
,n]=size(z),则要求length(x)=n,length(y)=m,面上的点由(x(j),y(i),z(I,j))确定。
Surface(x,y,Z,C) 曲面确定如上情形,颜色由参数
c
确定。
surface(
…
'PropertyName',PropertyValue,
…
)
对指定的曲面属性
PropertyName指定为PropertyValue,对曲面进行细微控制。
h = surface(
…
)
返回生成面对象的句柄。
命令5 image
功能 显示图片对象。该命令通过对矩阵
c
中每一个元素(每一元素作为引用图形色图下标或直接给出
RGB值)的解释而生成一个图片对象。
Image
命令有两种使用格式:
1
.一个调用命令
newplot
的高级函数,可以确定在何处放置图片与坐标轴的范围为刚好围住图片;使刚生成的图片放置在坐标轴的刻度线与格栅线之上;属性
Ydir设置为
rervse
;属性
View
为
[0 90]
。
2
.一个增加图片到当前坐标轴的低级命令,而没有调用命令
newplot
,在低级使用形式中,只能对指定属性进行设置操作。
用户在命令的输入参量中可以输入属性名
/
属性值,结构数组,细胞数组等。
用法 image(C)
把
C
作为一图片进行显示。
C
中的每一个元素指定了一个“图片”矩形中的相应部分的颜色。
image(x,y,C)
在
(x,y)确定的位置上画
C
的元素。其中
x
,
y
都为
2
维矩阵,分别指定
x
轴与
y
轴的范围,其效果与
image(C)相同,只不过是进行了恰当的比例缩放。
image(x,y,C,'PropertyName',PropertyValue,
…
)
该形式为指定属性名
/
属性值的高级使用形式,在执行该命令之前,先执行命令
newplot
。
image('PropertyName',PropertyValue,
…
)
该形式为低级使用形式,它只接受属性名
/
属性值的输入。
handle = image(
…
)
返回刚生成的图片对象的句柄。用户可以从上面的任何形式的调用后获得图片句柄。
例
7-49
>>load clown
>>image(X,'CDataMapping','scaled')
>>colormap(map)
图形结果为图
7-48
。
命令6 uicontrol
功能 生成用户控制图形对象(用户界面控制)。也通过该命令运行图形用户界面。当对象被选中时,一般会执行相应的操作。系统支持多种控件,每一种都有不同的作用:
Ÿ 校验框——当单击检验框时,会执行一操作。该组件对于提供用户多个独立的选择是很有用的。要激活一校验框,只需用鼠标单击该组件即可,且选中的状态在组件上显示出来。
Ÿ 可编辑文本框——允许用户输入与修改文本文字的区域。当用户想把文字作为 输入时,可使用该组件。若一可编辑文本框有焦点,则单击文本框的菜单栏不会执行任何操作。因此,在单击菜单条后,语句get(edit_handle,’String’)并没有返回当前编辑框中的内容。因为系统必须执行回调函数来改变属性
string
的值,即使屏幕上显示的文字已经改变。
Ÿ 框架——该组件为一封闭的、可见的、图形窗口区域。框架能使一用户图形界面中相关的控制组件能容易理解。框架没有相关的回调程序。只有控制组件能在框架中显示。框架不是透明的,因此用户定义的组件先后顺序决定了组件是否被框架遮住或可见。属性Stacking order决定了控制组件的显示顺序:第一个定义的组件最先显示,后面定义的控制组件则覆盖已经存在的组件。若用户要用一框架包围一些组件,则必须第一个定义框架。
Ÿ 列表框——显示一些项目的列表(用命令
string
设置),且允许用户选择一个或多个项目。属性
Min与Max控制着选择的模式。属性Value显示可选择的项目与包含着字符串列表中项目的索引;对于选择了多个项目则用向量表示。在任何的能改变属性Value值的、鼠标松开的操作之后,系统MATLAB将马上执行列表框的回调函数。因此,用户有必要增加一“Done”按钮,用于推迟当要多次选择项目时的操作。在执行列表框回调函数Callback属性之前,列表框中项目的选择有单击或双击之分,对应于将图形窗口属性SelectionType设置为normal或open。
Ÿ 弹出菜单——当组件被按下时,打开且显示一选择列表(用命令
string
设置)。当没有打开时,该组件显示当前的选择项。该组件对于用户想给其他用户提供一系列的互斥的选择项,又不想占用太多的区域。
Ÿ 普通按钮——当该组件被按下时,将执行一操作。要激活一按钮,只需在按钮上按下鼠标按钮。
Ÿ 单选按钮——该组件与校验框相类似,但它包含几个互斥的、而且相关的选项(例如在任意时刻,只能选择一个状态)。要激活某一单选按钮,只需在该组件上按下鼠标即可。被选中的组件同时显示出来。
Ÿ 滑块——该组件允许用户通过移动某一范围之内的滑块来输入一指定的数值。用户要移动一滑块,只需在滑块上按下鼠标不放,且在滑块方向上移动;或者是在滑槽内单击鼠标;或者是单击滑块条上的箭头。当松开鼠标后,滑块所在位置将与一数值对应。用户可以设置滑块的最大值、最小值与当前值等。
Ÿ 静态文本框——显示文本行。静态文本经常作为其他控制对象标签,以提供其他用户相关信息,或者是显示一滑块的数值。其他用户不能交互地改变静态文本,因此对于静态文本,没有相关的回调函数。
Ÿ 触发按钮——当该组件被单击且显示出它们的状态(
on
或者
off
)时,控制是否执行回调函数。
用法 handle = uicontrol(parent)
在父对象
parent
上生成一用户图形控制界面。用户界面控制对象都是图形窗口的子对象,所以当窗口中没有坐标轴时,同样可以放置控制组件于图形窗口中。
handle = uicontrol(
…
,'PropertyName',PropertyValue,
…
)
参量
PropertyName为属性名,参量PropertyValue可为结构数组或者为单元数组,同时随意地返回刚生成的对象的句柄。当然用户可以通过命令set与
get
来设置与询问生成对象的属性值。
附:表
7-12
列出所有的用于命令
uicontrol
对象的属性名。每一属性名当作一描述该属性的链接。
表
7-12
有效值:pushbutton、
edit
、
togglebutton
、
slider
、
text
、
radiobutton
、
popupmenu
、
listbox
、
frame
缺省值:
pushbutton
命令7 uimenu
功能 生成图形窗口的菜单中的层次的菜单与下一级子菜单。即增加新的菜单于已经存在的菜单后面,当一菜单项被选中时,该菜单项与它的下一级菜单也将显示。也可用该命令生成与组件相关的菜单。
用法 handle = uimenu('PropertyName',PropertyValue,
…
)
在当前图形窗口菜单条上用指定的属性
PropertyName与相应的属性值PropertyValue创建一菜单,同时将该菜单的句柄赋给
handle
。其中两个输入参量可以是结构数组或者是单元数组。用户界面菜单的回调函数属性定义了当用户激活菜单项时,进行的响应操作。
uimenu('PropertyName',PropertyValue,
…
)
效果同上,但不返回句柄值。
handle = uimenu(parent,'PropertyName',PropertyValue,
…
)
生成一父菜单的子菜单,或者是生成由
parent
指定的相关菜单中的菜单项目。若
parent
不是另外的用户界面菜单对象或用户界面相关菜单对象,而是一图形窗口,则系统将生成该图形窗口菜单条上的新的菜单。同时将生成的菜单赋值给句柄
handle
。
uimenu(parent,'PropertyName',PropertyValue,
…
)
效果同上,但不返回菜单的句柄。
附:表
7-13
列出了所有对
uimenu
对象有用的属性,分别按功能进行了分类。每一属性名作为该属性描述的索引。
表
7-13
功能 创建坐标轴图形对象。该命令是创建坐标轴图形对象的低级函数命令。
用法 axes
在当前图形窗口中用缺省的属性值创建一坐标轴图形对象。
axes('PropertyName',PropertyValue,
…
)
用参量
'PropertyName'指定的属性名与用参量PropertyValue指定的属性值创建一坐标轴。对于没有指定的属性名,系统则使用缺省的属性值。
axes(h)
使已经存在的坐标轴
h
成为当前的坐标轴。同时使坐标轴
h
为图形窗口中的所有子对象属性(
Children property)的第一坐标轴,也使图形窗口的CurrentAxes属性为
h
。当前坐标轴是图形函数
image
、
line
、
patch
、
surface
与
text
等命令输出图形对象的目的地。
h = axes(
…
)
返回已经创建的坐标轴对象的句柄。
命令2 cla
功能 清除当前坐标轴。该命令在命令窗口中执行与在回调程序中执行效果是一样的,即它不能区别由
callback
设置的属性
HandleVisibility,也就是说,当它从一回调程序中执行时,命令
cla
仅仅删除属性
HandleVisibility为on的图形对象。
用法 cla
清除当前坐标轴中所有句柄为不隐藏(例如,图形对象属性
HandleVisibility设置为
on
)的图形对象。
cla reset
无条件地清除当前坐标轴中所有图形对象,且重新设置坐标轴的属性,(除了属性
Position和Units)。
命令3 gca
功能 获取当前坐标轴句柄。
用法 h=gca
返回当前图形窗口中的坐标轴句柄。若坐标轴不存在,系统则生成一坐标轴同时返回它的句柄。用户不想得到上面的结果,可以输入
get(gcf,’CurrentAxes’)。
当前坐标轴为用户创建坐标轴以下子对象的目的地。有许多图形命令可以在当前坐标轴中画出图形对象,如:plot,text,surf等。改变了当前窗口,相应地改变了当前坐标轴。
7.3.3 图形句柄操作命令
命令1 gco
功能 返回当前对象的句柄。“当前对象”为最后用鼠标单击的对象,除了命令
uimenus
之外。若鼠标没有单击到一图形对象之下的子对象,则该图形对象为“当前对象”。系统会把当前图形对象的句柄存放于图形的属性
CurrentObject之中。当前图形窗口中的当前对象并非总是那些它们的回调函数,而是正在执行的对象。其他函数的回调中断函数可以改变当前对象或者甚至是当前图形窗口。一些回调函数,如生成命令CreateFcn、删除命令DeleteFcn与用户界面菜单命令Callback等就没有改变当前图形窗口或者当前对象。
用法 h = gco
返回当前对象的句柄给
h
。
h = gco(figure_handle)
返回指定窗口
figure_handle中的当前对象的值。
命令2 get
功能 获取对象属性。
用法 get(h)
返回由句柄
h
指定的图形对象的所有属性与相应的当前属性值;
get(h,'PropertyName')
返回由句柄
h
指定的图形对象的指定属性
PropertyName的属性值。
<m-by-n value cell array> = get(H,<property cell array>)
返回由
m
个图形对象的
n
个属性值组成的
m*n
阶的细胞数组,其中
m=
length(H),且
n
为指定的属性细胞数组
<property cell of array>中包含的属性名个数。
a = get(h)
返回一结构,其中该结构的域名为该对象的属性名,结构的域名值为相应属性的当前值。
H
必须为标量。若用户没有指定输出参量,则系统将信息显示于屏幕之上。
a = get(0,'Factory')
返回所有能由用户设置的属性的缺省定义值。输出参量
a
为一结构数组,该结构的域名为对象的属性名,域名值为相应属性的当前值。若用户没有指定输出参量,则系统将信息显示于屏幕之上。
a = get(0,'FactoryObjectTypePropertyName')
返回指定对象类型的指定的属性的缺省属性值。输入参量
FactoryObjectTypePropertyName为一关键字,由字符Factory与对象类型(如:Figure)还有属性名(如:Color)组成:FactoryFigureColor
a = get(h,'Default')
返回由句柄
h
指定的对象的所有缺省属性值。输出参量
a
为一结构,该结构的域名为缺省值对应的属性名。若用户没有指定输出参量,则系统将该结构信息显示于屏幕。
a = get(h,'DefaultObjectTypePropertyName')
返回对象类型的指定属性的缺省属性值。输入参量
DefaultObjectTypePropertyName为一关键字,该字由字符Default与对象类型名(例如:Figure)还有具体的属性名(例如:Color)组成:DefaultFigureColor
例
7-50
若想获得定义于屏幕之上的图形对象属性LineWidth的缺省属性值,输入:get(0,'DefaultLineLineWidth')
命令3 set
功能 设置对象的属性。
用法 set(H,'PropertyName',PropertyValue,
…
)
用属性值
'PropertyValue'设置关于用参量H标志的对象(一个或多个)的属性名'PropertyName'(一个或多个)。
H
可以为一句柄的向量。在这种情形下,命令
set
可以设置所有对象的属性值。
set(H,a)
用指定的属性值设置由
H标志的对象的属性。其中
a
为一结构数组,该结构数组的域名为对象的属性名,域名值为相应属性名的属性值。
set(H,pn,pv
…
)
对由
H指定的所有对象中指定的细胞数组属性名
pn
设置为相应的细胞数组属性值
pv
。
set(H,pn,<m-by-n cell array>)
对于每
m
个图形对象设置
n
个属性值,其中
m
=length(H),n为包含属性名的细胞数组
pn
中包含的属性名个数。即允许用户对每一对象的指定的属性设置不同的属性值。
a= set(h)
返回句柄
h
中允许用户设置的属性名与可能的属性值。输出参量
a
为一结构数组,其域名为对象的属性名,域名值为相应的属性名对应的属性值。若没有指定输出参量
a
,则系统自动将信息显示于屏幕,
h
必须为标量。
a= set(0,'Factory')
返回那些用户可以设置缺省值的所有对象的属性名,同时显示可能的属性值,输出参量
a
为一结构数组,其域名为对象的属性名,域名值为相应的属性名对应的属性值,若没有指定输出参量
a
,则系统自动将信息显示于屏幕。
a= set(0,'FactoryObjectTypePropertyName')
返回指定根对象(
0
)类型中指定的属性名
ObjectTypePropertyName的所有可能的属性值。输入参量是由固定的关键字Factory、对象类型(如
axes
)与属性名(如
position
等)组成。
a= set(h,'Default')
返回由
h
标记的对象上缺省设置的值,其中
h
必须是标量。
a= set(h,'DefaultObjectTypePropertyName')
返回指定对象
h
的类型中指定的属性名
ObjectTypePropertyName的所有可能的属性值。输入参量是由固定的关键字Factory、对象类型(如
axes
)与属性名(如
position
等)组成。
命令4 reset
功能 重新设置图形对象的属性为它们的缺省值。
用法 reset(h)
重新设置由句柄
h
指定的图形对象的属性为系统为它们设置的初始值。若
h
为一图形
figure
,该命令不能重新设置属性
Position,Units,PaperPosition和PaperUnits;若
h
为一坐标轴
axes
,该命令不能重新设置属性
Position和Units。
例
7-51
reset(gca) %重新设置当前坐标轴的属性。
reset(gcf) %重新设置当前图形的属性。
命令5 delete
功能 删除文件或图形对象。作为一可供选择的函数,用户可从当前目录浏览器
(
Current Directory browser)中删除文件。要打开该浏览器,从MATLAB桌面上的View菜单中选择Current Directory命令。
用法 delete filename
从磁盘上删除指定的文件
filename
。参量
filename
可以是绝对路径或与当前路径相关的路径名。其中可以包括通配符(
*
)。
delete(h)
删除由句柄
h
指定的图形对象。该命令无条件地、直接地删除对象,甚至是图形窗口。
delete('filename')
这是第一种情形的函数形式。当文件名包含于字符串
filename
中时,使用函数形式。
delete(‘D:\MATLABR12\work\*.m’) % 将删除指定目录上的所有
.m
文件。
命令6 findobj
功能 定位图形对象且返回它们的句柄。用户可用特定的属性值与沿着指定的层次分支来限定搜索条件。
用法 h = findobj
返回根对象与它的所有的子孙对象句柄。
h = findobj('PropertyName',PropertyValue,
…
)
返回属性名
PropertyName具有属性值PropertyValue的所有图形对象。用户可指定一对或多对PN与PV值,对此,
findobj
返回满足所有条件的那些对象。
h = findobj(objhandles,
…
)
限定搜索的对象为列表于
objhandles
中的对象与它们子孙对象。
h = findobj(objhandles,'flat','PropertyName',PropertyValue,
…
)
限定搜索对象为
objhandles
中列出的对象,而不包含它们的子孙对象。
7.3.4 图形窗口的控制命令
命令1 subplot
功能 生成与控制多个坐标轴。把当前图形窗口分隔成几个矩形部分,不同的部分是按行方向以数字进行标号的。每一部分有一坐标轴,后面的图形输出于当前的部分中。
用法 subplot(m,n,p)
将一图形窗口分成
m*n
个小窗口,在第
p
个小窗口中创建一坐标轴。则新的坐标轴成为当前坐标轴。若
p
为一向量,则创建一坐标轴,包含所有罗列在
p
中的小窗口。
subplot(h)
使句柄
h
对应的坐标轴称为当前的,用于后面图形的输出显示。
subplot('Position',[left bottom width height])
在由
4
个元素指定的位置上创建一坐标轴。位置元素的单位为归一化单位。
h = subplot(
…
)
返回一新坐标的句柄于
h
。
命令2 hold
功能 保持当前图形窗口中的图形。该命令是决定是否在当前坐标轴中只能增加新的图形对象还是覆盖原有图形对象。测试保持状态命令为
ishold
。该命令可以设置当前坐标轴与当前图形的属性
NextPlot。若一图形窗口中有多个坐标轴,则每个坐标轴有自己的保持状态。
用法 hold on
保留当前图形与当前坐标轴的属性值,后面的图形命令只能在当前存在的坐标轴中增加图形,即设置当前坐标轴属性
NextPlot为
add
。当必要的时候,坐标轴的一些属性在增加新图时还是要进行相应的改变。例如,当新图形的数据范围超出了当前坐标轴的范围,则命令会自动地改变坐标轴的范围,使能显示新图形。
hold off
在画新图形之前,重新设置坐标轴的属性为缺省值。
off
是命令
hold
命令的缺省值。设置当前坐标轴的属性
NextPlot为
replace
。
hold
在
on
与
off
之间转换。即在增加图形与覆盖图形之间切换。当坐标轴不存在时,则生成一坐标轴。同时使当前坐标轴属性
NextPlot在
add
与
replace
之间切换。
命令
3
gcf
功能 获得当前图形窗口的句柄。
用法 h = gcf
返回当前图形窗口的句柄。当前窗口为由命令
plot
、
title
与
surf
等得到的结果。若不存在图形窗口,则系统自动地生成一个,并返回它的句柄。若用户想当图形窗口不存在时,也不创建新的,则输入:
get(0,'CurrentFigure')
命令4 clf
功能 清除当前图形窗口。该命令在命令窗口中执行与在回调程序中执行效果是一样的,即它不能区别由
callback
设置的属性
HandleVisibility,也就是说,当它从一回调程序中执行时,命令
clf
仅仅删除属性
HandleVisibility为on的图形对象。
用法 clf
清除所有当前图形窗口与窗口中的所有那些句柄为不隐藏(例如它们的属性
HandleVisibility为
on
)的图形对象。
clf reset
无条件地清除当前图形窗口中所有的图形对象,且重新设置所有图形窗口属性为缺省值,除了属性
Position,Units,PaperPosition,PaperUnits。
命令5 close
功能 删除指定的图形窗口。
用法 close
删除当前的图形窗口。
close(h)
删除由句柄
h
指定的图形窗口。若
h
为一向量或矩阵,则
close
全部删除其中每一分量指定的图形句柄。
close name
删除指定名字
name
的窗口。
close all
删除所有没有隐藏的图形。
close all hidden
删除所有具有隐藏的图形。
status = close(
…
)
若成功地删除了指定的对象则返回
status=1
,否则返回
0
。
命令6 newplot
功能 做好开始画新图形对象的准备。在高级图形
m-
文件的开始使用该命令,用于确定在哪一个图形窗口与坐标轴中输出图形。调用命令
newplot
能改变当前窗口与坐标轴。基本上,当要在已经存在的窗口与坐标轴中画图,有三个选项可选:
1
.没有改变任何属性与删除任何对象,直接在当前坐标轴中增加新的图形对象;
2
.在画图形的对象之前,删除所有存在于当前坐标轴中的,句柄为非隐藏的对象;
3
.在画图形的对象之前,无条件删除所有的存在于当前坐标轴中的对象(不管句柄是否为隐藏),同时设置大部分的属性为缺省值;
4
.首先,
newplot
读取当前图形的属性
NextPlot的属性值(关于该属性的含义参见
figure
或
axes
的属性表),再执行相应的动作;
5
.然后,
newplot
确定在哪一个窗口中画图,它读取当前图形的属性
NextPlot的属性值,执行相应的操作。
用法 newplot
画好图形窗口与坐标轴,后面的图形命令就可以在该坐标轴内画图。
h = newplot
效果如上,且返回当前坐标轴的句柄给
h
。
7.4 颜色与光照模式命令
7.4.1 颜色控制命令
命令1 colormap
功能 设置或获取当前色图。色图为一个
m*3
的、元素在
0
到
1
之间的实数的矩阵,每一行为定义一个颜色的
RGB向量。色图矩阵的第
k
行定义了第
k
个颜色,其中
map(k,:)=[r(k) g(k) b(k)]指定了组成该颜色中红色、绿色、兰色的强度。
用法 colormap(map)
通过矩阵
map
设置色图。若矩阵
map
中的元素不在
[0 1]
区间之内,则返回一个错误。在目录
color
中的
m-
文件能够生成许多色图,每一个
m-
文件能够接受颜色数作为函数参数,例如命令
colormap(hsv(64))生成了有
64
种颜色的
hsv
色图。若用户没有指定颜色数,例如命令
colormap(hsv),生成与当前色图中颜色数相同的
hsv
色图。
MATLAB支持的色图见表
7-14
。
表
7-14
命令5 flag
功能 生成一个颜色顺序为红、白、兰、黑的色图。
用法 flag
(
m
)返回一个阶数为
m*3
的包含“
flag
”的色图。增加
m
的值,会增加色图的颗粒程度。
flag
返回一个与当前色图函数相同的色图。
命令
6
gray
功能 生成一个线性灰度化的色图。
用法 gray
(
m
)返回个一个阶数为
m*3
的包含灰度化的的色图。
gray
返回一个与当前色图函数相同的色图。
命令7 hot
功能 生成一个颜色顺序为黑、红、黄、白的色图。
用法 hot
(
m
)返回个一个阶数为
m*3
的包含“
hot
”的色图。
hot
返回一个与当前色图函数相同的色图。
命令
8
hsv
功能 生成一个包含色度
-
饱和度值的色图。一个
hsv
色图包含各种饱和色度颜色的色度的成分。其颜色从红色到黄色、绿色、青色、蓝色、品红,最后返回红色。该色图对于显示周期函数很有用处。
用法 hsv
(
m
)返回个一个阶数为
m*3
的包含
hsv
的色图。
hsv
返回一个与当前色图函数相同的色图。
命令
9
jet
功能 不同于
hsv
色图的另外一种色图。
用法 jet
(
m
)返回个一个阶数为
m*3
的,与
hsv
(
m
)不同的色图,用于显示
NCSA流体激光图片。
jet
返回一个与当前色图函数相同的色图。
命令10 pink
功能 生成一个带柔和阴影粉红色图。
用法 pink
(
m
)返回一个阶数为
m*3
的包含“
pink
”的色图。
pink
返回一个与当前色图函数相同的色图。
命令11 prism
功能:生成一个三棱镜色图。如同
hsv
色图一样,
prism
色图中的颜色使用顺序是一样的,不同的是,命令
prism
重复使用它的六中颜色,而命令
hsv
是连续地变换它的颜色。
用法 prism
(
m
)返回一个阶数为
m*3
的包含六种循环使用的颜色:红色、橙色、黄色、绿色、蓝色、紫色。
prism
这种没有任何输入输出参量的形式,改变当前坐标轴中的线对象的颜色为三棱镜中的颜色。
7.4.2 色图控制命令
命令1 brighten
功能 增亮或变暗色图。
用法 brighten(beta)
增亮或变暗当前的色图。若
0
<beta<1,则增亮色图;若
-1
<beta<0
,则变暗色图。改变的色图将代替原来的色图,但本质上是相同的颜色。
brighten(h,beta)
对指定的句柄对象
h
中的子对象进行操作。
newmap = brighten(beta)
该命令没有改变当前图形的亮度,而是返回变化后的色图给
newmap
。
newmap = brighten(cmap,beta)
该命令没有改变指定色图
cmap
的亮度,而是返回变化后的色图给
newmap
。
命令2 colorbar
功能 显示能指定颜色刻度的颜色条。且调整当前坐标轴,以适应当前的颜色条。
用法 colorbar
更新最近生成的颜色条。或若当前坐标轴没有一颜色条,则在右边显示一垂直的颜色条。
colorbar('vert')
增加一垂直的颜色条到当前的坐标轴。
colorbar('horiz')
增加一水平的颜色条到当前的坐标轴。
colorbar(h)
用坐标轴
h
来生成一颜色条。若坐标轴的宽度大于高度,则颜色条是水平放置的。
h = colorbar(
…
)
返回一颜色条句柄
h
,该句柄是一坐标轴对象。
colorbar(
…
,'peer',axes_handle)
生成一与坐标轴
axes-handle
有关的颜色条,代替当前的坐标轴。
命令3 contrast
功能 提高灰度色图的对比度。该命令可以增强图像的对比度。
用法 cmap = contrast(X)
返回一灰度色图,该色图与当前色图有相同的维数。参量
cmap
为生成的灰度色图。
cmap = contrast(X,m)
返回维数为
m*3
的灰度色图
cmap
。
例
7-53
>>load clown;
>>cmap = contrast(X);
>>image(X);
>>colormap(cmap);
命令
4
rgbplot
功能 画出色图。
用法 rgbplot(cmap) 画出维数为
m*3
的色图矩阵
cmap
的每一列,矩阵的第一列为红色强度,第二列为绿色强度,第三列为蓝色强度。
命令5 diffuse
功能 漫反射率。
用法 R = diffuse(Nx,Ny,Nz,S) 返回曲面的漫反射率向量
[
Nx,Ny,Nz]
,
S为一三维向量,用于定义光源的方向;S也可以为球面坐标系中的二维向量
[
Theta,Phi]
。
Lambert定律:R = cos(PST),其中PST为曲面法线与光源方向之间夹角。
命令6 specular
功能 镜面反射率。
用法 R = specular(Nx,Ny,Nz,S,V,spread)
返回一曲面的镜面反射率向量
[
Nx,Ny,Nz]
,向量参量
S与V分别用于指定光源位置与观察点的位置。它们可以为三维直角坐标系向量
[
x,y,z]
或者为二维球面向量
[Theta,Phi]。当标准向量的方向为(S+V)/2,则镜面的高光效果最强。第六个参量
spread
为镜面反射扩散系数。
命令7 surfl
功能 三维带光照模式的阴影图。图形的色泽取决于曲面的漫反射、镜面反射与环境光照模式。
用法 surfl(…)效果与命令surf(…)基本上一样,除了它受光源影响的曲面之外。
surfl(Z)、surfl(X,Y,Z)、surfl(Z,S)、surfl(X,Y,Z,S)、surfl(X,Y,Z,S,K) 这些都是有效的使用形式。若参数中有
S
,则为一三维向量
[
Sx,Sy,Sz]
,用于指定光源的方向。
S
也可视为点坐标系下的二维向量
[AZ,EL]。
S
的缺省值为从当前观察方向逆时针旋转
45
度。使用命令组
cla;hold on;view(AZ,EL);surfl(…);hold off等可画出视角方向为(AZ,EL)的带光照模式的曲面图。第五参数K=[ka,kd,ks,
spread]
指定环境光、漫反射光、镜面反射光、扩散系数等的强弱。
surfl(…,'light') 用LIGHT对象生成一带颜色的、带光照模式的曲面。该命令可以生成与用缺省光照模式不同效果的曲面。
surfl(…,'cdata') 指定的曲面的反射光的颜色为
cdata
。
H = surfl(…) 返回曲面与光源的句柄。