matlab的findobj函数
句柄图形是对底层图形函数集合的总称,它实际上进行生成图形的工作。这些函数一般隐
藏于 M 文件内部, 但是它们非常地重要, 因为程序员可以利用它对图象或图片的外观进行控制
MATLAB图形系统是建立图形对象的等级系统之上,每一个图形对象都有一个独立的名
字,这个名字叫做句柄。每一个图形对象都有它的属性,我们可以通过修改它的属性来修改物
体的行为。例如,一条曲线是图形对象的一种。曲线对象有以下的属性:x 数据,y数据,颜色,
线的类型,线宽,符号类型等等。修改其中的一个属性就会改变图象窗口中的一个图象。
由图形命令产生的每一件东西部是图形对象。例如,图形中的每一个曲线,坐标轴和字符
串是独立的对象(拥有独立的名字句柄,还有形式)。所有的图象对象按子对象和父对象的形式
管理,如图 9.1 所示。当一个子对象被创建时,它可能继承了父对象的许多属性
每一个图形可包括四个对象:Uimenu对象,Uicontrol 对象,坐标系对象和 Uicontextmenus
对象。Uimenu 对象,Uicontrol 对象,和 Uicontextmenus对象是专门地用来创建用户图形界面的
对象。坐标系对象是指在用于显示图象的图片中的区域。在一个图象窗口中,它可能含有一个或多个坐标系
每一个图象对象都有一个独一无二的名字,这个名字叫做句柄。句柄是在 MATLAB 中的
一个独一无二的整数或实数,用于指定对象的身份。用于创建一个图象对象的任意命令都会自
动地返回一个句柄。例如,命令
>>Hnd1 = figure;
创建一个新的图象,并返回这个图象的句柄到变量 Hnd1。根对象句柄一般为 0,图象(图)
对象的句柄一般是一个小的正整数,例如 1,2,3……而其他的图形(graphic)对象为任意的浮点
数。
我们可以利用 MATLAB函数得到图象,坐标系和其他对象的句柄。例如,函数 gcf返回当前图象窗口的句柄,而函数 gca 则返回在当前图象窗口中的当前坐标系对象的句柄,函数 gco返回当前选择对象的句柄。这些函数将会在后面将会被具体讨论。 为了方便,存储句柄的变量名要在小写字母后面个 H。这样就可以与普通变量(所有的小写变量,大写变量,全局变量)区分开来
对象属性是一些特殊值,它可以控制对象行为的某些方面。每一个属性都有一个属性名和属性值。
9.3.1在创建对象时改变对象的属性
当一个对象被创建时,所有的属性都会自动初始化为默认值。包含有"propertyname(属性名)"的创建函数创建对象时,默认值会被跳过,而跳过的值在创建函数中有。例如,我们在第二章看到,线宽属性可以通过下面的 plot 命令改变。
plot(x, y, 'LineWidth', 2);
录一个曲线被创建时,函数用值 2来替代它的默认值。
9.3.2 对象创建后改变对象的属性
我们可以用随时用 get 函数检测任意一个对象的属性,并用
set 函数对它进行修改。get 函
数最常见的形式如下
value = get(handle, 'PropertyName');
value = get(handle);
value是勤句柄指定对象的属性值。如果在调用函数时,只有一个句柄,那么函数将会返
回一个结构,域名为这个对象的属性名,域值为属性值。
set 函数的最常用形式为
set(handle,'PropertyName1', value1, ...);
例:
Hnd1 = plot(x, y);图象如图 9.2a所示。这个曲线的句柄被存储在变量 Hnd1 内,我们可以利用它检测和修改
这条曲线的属性。函数 get(Hnd1)在一个结构中返回这条曲线所有的属性,每一个属性名都为结
构的一个元素。
>> result=get(Hnd1)
result =
Color: [0 0 1]
EraseMode: 'normal'
LineStyle: '-'
LineWidth: 0.5000
Marker: 'none'
MarkerSize: 6
MarkerEdgeColor: 'auto'
MarkerFaceColor: 'none'
XData: [1x21 double]
YData: [1x21 double]
ZData: [1x0 double]
BeingDeleted: 'off'
ButtonDownFcn: []
Children: [0x1 double]
。。。。。
图对象,axes对象,line对象的句柄。图对象的句柄由函数gcf返回,axes 对象的句柄由函数 gca 返回,line对象由plot函数返回
set(gcf,'Color',[1 0.8 0.8]);
set(gca,'YGrid','on');
set(Hndl,'Color',[1 0.5 0],'LineWidth',3);
9.4 用 set函数列出可能属性值
函数用于提供所有可能的属性值列表。如果在调用函数 set 时,只包括属性名而不包括相应
的属性值,那么函数 set 就会返回所有的合法属性值。例如,命令set(Hnd1,"LineStyle")将返
回所有可能的线型,大括号中是默认的线型。
>>set(Hndl,'LineStyle')
[ {-} | -- | : | -. | none ]
这个函数的合法包括和"none",第一个是默认的类型。
>>set(Hndl,'LineWidth')
A line's "LineWidth" property does not have a fixed set of property values.
函数 set(Hnd1)返回一个对象的所有属性的所有可能的属性值。
>> set(Hndl)
ans =
Color: {}
EraseMode: {4x1 cell}
LineStyle: {5x1 cell}
LineWidth: {}
Marker: {14x1 cell}
MarkerSize: {}
MarkerEdgeColor: {2x1 cell}
MarkerFaceColor: {2x1 cell}
LineStyle: {5x1 cell}
LineWidth: {}
Marker: {14x1 cell}
MarkerSize: {}
MarkerEdgeColor: {2x1 cell}
MarkerFaceColor: {2x1 cell}
XData: {}