主要内容

找到对象

查找具有特定属性值的对象

findobj函数可以扫描对象层次结构,以获取具有特定属性值的对象的句柄。

为了识别,所有图形对象都有一个标签属性,可以设置为任何字符向量。然后可以搜索特定的属性/值对。例如,假设您创建了一个复选框,该复选框有时在UI中是非激活的。对象赋一个唯一的值标签属性,你可以找到特定的对象:

uicontrol (“风格”“复选框”“标签”“保存选项”

使用findobj定位其标签属性设置为“保存选项'并禁用它:

hCheckbox = findobj (“标签”“保存选项”);hCheckbox。使=“关闭”

如果不指定起始对象,findobj从根对象进行搜索,查找指定的属性名/属性值组合的所有出现情况。

要查找带有隐藏句柄的对象,请使用findall

通过字符串属性查找文本

方法查找文本对象字符串财产。

下图包含标注函数特定值的文本对象。

假设你想移动标记为sin(t)的文本从现在的位置。707(π/ 4,罪(π/ 4)]重要的是(3 *π/ 4,罪(3 *π/ 4)]函数具有相同的值(在图中以浅灰色显示)。

确定标记点的文本对象的句柄(π/ 4,罪(π/ 4)]并更改其位置财产。

使用findobj,选择唯一标识该对象的属性值。下面的例子使用了文本字符串属性:

hText = findobj (“字符串”“\ leftarrowsin (t) = .707 ');

将对象移动到新位置,定义文本位置在轴的单位。

hText。位置=[3π/ 4,罪(3 *π/ 4),0];

findobj允许您通过指定层次结构中的起点来限制搜索,而不是从根对象开始。如果在对象树中有很多对象,这种功能会导致更快的搜索。在前面的例子中,你知道感兴趣的文本对象在当前轴中,所以你可以输入:

hText = findobj (gca),“字符串”“\ leftarrowsin (t) = .707 ');

使用findobj正则表达式

这个例子展示了如何使用正则表达式查找对象句柄来标识特定的属性值。有关正则表达式的更多信息,请参见正则表达式

假设您创建了如下图,并希望修改所创建对象的某些属性。

x =破发;y = (1.5 * cos (x); 4 * exp(约* x)。* cos (x); exp(0。* x)。* cos (x)] ';h =茎(x, y);h(1)。标志=“o”;h(1)。标签=指数衰减的;h(2)。标志=“广场”;h(2)。标签=指数增长的;h(3)。标志=‘*’;h(3)。标签=“稳定状态”

传递正则表达式findobj使您能够匹配特定的模式。例如,假设您想要设置MarkerFaceColor属性设置为绿色有自己的标签属性设置为“稳定状态”(即代表衰减和增长的指数的茎)。

hStems = findobj (“正则表达式”“标签”' ^ (? !稳态$)。);k = 1:length(h茎)h茎(k)MarkerFaceColor =“绿色”结束

限制搜索范围

指定对象树中的起始点以限制搜索范围。起始点可以是图形、轴或一组对象的句柄。

例如,假设您想要更改特定轴上茎干的标记面颜色:

x =破发;y = (1.5 * cos (x); 4 * exp(约* x)。* cos (x); exp(0。* x)。* cos (x)] ';Tiledlayout (3,1) ax1 = nexttile;x,y(:,1)) ax2 = nexttile;x,y(:,2)) ax3 = nexttile;茎(x, y (:, 3))

只在第三轴上设置茎干的标记面颜色。

h = findobj (ax3,“类型”“干细胞”);h.MarkerFaceColor =“红色”

有关限制对象搜索范围和深度的更多信息,请参见findobjfindall