findobj
类: handle
查找句柄对象
语法
Hmatch = findobj(H)
Hmatch = findobj(H,property,value,...,property,value)
Hmatch = findobj(H,'-not',property,value)
Hmatch = findobj(H,'-regexp',property,expression)
Hmatch = findobj(H,property,value,logicaloperator,property,value)
Hmatch = findobj(H,'-function',fh)
Hmatch = findobj(H,'-function',property,fh)
Hmatch = findobj(H,'-class',class)
Hmatch = findobj(H,'-isa',class)
Hmatch = findobj(H,'-property',property)
Hmatch = findobj(H,'-method',methodname)
Hmatch = findobj(H,'-event',eventname)
Hmatch = findobj(H,'-depth',d,___)
说明
返回 Hmatch
= findobj(H
)H
中列出的对象及其所有后代。
查找将指定属性设置为指定值的 Hmatch
= findobj(H
,property
,value
,...,property
,value
)handle
对象(使用 isequal
进行比较)。
根据以下 Hmatch
= findobj(H
,'-not',property
,value
)property
value
对组对表达式进行逆向运算。即,查找其指定的属性不等于 value
的对象。
使用 Hmatch
= findobj(H
,'-regexp',property
,expression
)expression
中定义的正则表达式来查找具有特定值的属性。并非所有类都支持使用正则表达式来查找属性值。
将逻辑运算符应用于名称/值对组。支持的逻辑运算符包括:Hmatch
= findobj(H
,property
,value
,logicaloperator,property
,value
)
'-or'
'-and'
(不指定运算符时的默认值)'-xor'
对 Hmatch
= findobj(H
,'-function',fh
)H
中的对象调用函数句柄 fh
,并返回此函数对其返回 true
的对象。
对 Hmatch
= findobj(H
,'-function',property
,fh
)H
中对象的指定属性值调用函数句柄 fh
,并返回此函数对其返回 true
的对象。此函数必须返回标量逻辑值。
查找属于指定类的所有对象。Hmatch
= findobj(H
,'-class',class
)
查找属于指定类的所有对象。Hmatch
= findobj(H
,'-isa',class
)
查找 Hmatch
= findobj(H
,'-property',property
)H
中具有给定属性的所有对象。
查找具有指定的方法名称的对象。Hmatch
= findobj(H
,'-method',methodname
)
查找具有指定事件名称的对象。Hmatch
= findobj(H
,'-event',eventname
)
指定要搜索 Hmatch
= findobj(H
,'-depth',d
,___)H
中对象下面的实例层次结构中的多少个级别。
将所有 -options
指定为字符向量或字符串标量。
输入参数
输出参量
示例
具有特定属性值的对象
查找具有特定属性值的对象。给定 handle
类 BasicHandle
:
classdef BasicHandle < handle properties Prop1 end methods function obj = BasicHandle(val) if nargin > 0 obj.Prop1 = val; end end end end
创建 BasicHandle
对象数组:
h(1) = BasicHandle(7); h(2) = BasicHandle(11); h(3) = BasicHandle(27);
查找 Prop1
属性值为 7 的对象的句柄:
h7 = findobj(h,'Prop1',7);
h7.Prop1
ans = 7
具有特定属性名称的对象
查找具有特定动态属性的对象。给定 button
类:
classdef button < dynamicprops properties UiHandle end methods function obj = button(pos) if nargin > 0 if length(pos) == 4 obj.UiHandle = uicontrol('Position',pos,... 'Style','pushbutton'); else error('Improper position') end end end end end
创建一个按钮对象数组,并且其中只有一个元素定义动态属性。使用 findobj
获取具有名为 ButtonCoord
的动态属性的对象句柄:
b(1) = button([20 40 80 20]); addprop(b(1),'ButtonCoord'); b(1).ButtonCoord = [2,3]; b(2) = button([120 40 80 20]); b(3) = button([220 40 80 20]); h = findobj(b,'-property','ButtonCoord'); h.ButtonCoord
ans = 2 3
使用正则表达式查找对象
使用正则表达式基于对象属性值查找对象。虽然 findobj
有一个 -regexp
选项,但并非所有类都支持此选项。此示例通过 -function
选项使用函数中提供的正则表达式来代替 -regexp
选项。
此类定义一个用于构建对象数组的静态方法。每个对象都有一个 Name
属性,该属性包含表示数组元素编号的字符。
classdef FindRegExpr < handle properties Name end methods (Static) function b = regXArray b = FindRegExpr.empty(0,50); for i = 1:50 b(i).Name = sprintf('%d',i); end end end end A = FindRegExpr.regXArray;
a = 1×50 FindRegExpr array with properties: Name
查找其 Name
属性包含以字符 '1'
开头的字符向量的对象。
subArray = findobj(a, '-function', 'Name', @(x) ~isempty(regexp(x, '^1\d*')));
subArray = 11×1 testRegExpr array with properties: Name
提示
findobj
只能访问公共成员。如果没有匹配项,则
findobj
返回类与输入数组H
相同的空数组。逻辑运算符优先级遵循 MATLAB 优先级规则。有关详细信息,请参阅运算符优先级。
通过在元胞数组中分组来控制优先级
扩展功能
版本历史记录
在 R2008a 中推出