Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

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 对象。

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 指定为字符向量或字符串标量。

输入参数

全部展开

要从中搜索的对象,指定为对象句柄数组。除非您指定 '-depth' 选项,否则 findobj 会搜索输入数组 H 中的对象以及实例层次结构中的子对象。

属性名称,指定为区分大小写的带引号文本。

数据类型: char | string

要查找的对象的类,指定为区分大小写的带引号文本。

数据类型: char | string

属性值,指定为值或 MATLAB® 表达式。

方法名称,指定为区分大小写的带引号文本。

数据类型: char | string

事件名称,指定为区分大小写的带引号文本。

数据类型: char | string

搜索深度,指定为一个指示输入数组 H 中任何给定对象下面的级别数的整数。

  • d = n - 搜索 H 中每个对象下面的 n 级层次结构。

  • d = 0 - 仅搜索与 H 中对象相同的级别。

  • d = inf - 搜索 H 中对象下面的所有级别。这是默认设置。

函数句柄,指定针对输入数组 H 中的每个对象求解的函数。此函数必须返回标量逻辑值,以指示存在 (true) 还是不存在 (false) 匹配项。

输出参数

全部展开

搜索找到的对象,以句柄数组形式返回。

属性

Accesspublic

要了解方法的属性,请参阅方法属性

示例

具有特定属性值的对象

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

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 优先级规则。有关详细信息,请参阅运算符优先级

  • 通过在元胞数组中分组来控制优先级

扩展功能

基于线程的环境
使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。

版本历史记录

在 R2008a 中推出

另请参阅