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 オブジェクトを検索します (isequal を使用して比較)。

Hmatch = findobj(H,'-not',property,value) は、後に続く propertyvalue のペアの式を反転します。つまり、指定のプロパティが 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 を文字ベクトルまたは string スカラーとして指定します。

入力引数

すべて展開する

検索対象のオブジェクト。オブジェクト ハンドルの配列として指定します。'-depth' オプションを指定しない限り、findobj は入力配列 H 内のオブジェクトと、インスタンス階層内の子オブジェクトを検索します。

プロパティ名。大文字と小文字を区別する、引用符付きのテキストとして指定します。

データ型: char | string

検出するオブジェクトのクラス。大文字と小文字を区別する、引用符付きのテキストとして指定します。

データ型: char | string

プロパティ値。値または MATLAB® 式として指定します。

メソッド名。大文字と小文字を区別する、引用符付きのテキストとして指定します。

データ型: char | string

イベント名。大文字と小文字を区別する、引用符付きのテキストとして指定します。

データ型: char | string

検索深度。入力配列 H 内の任意のオブジェクトから下のレベル数を示す整数として指定します。

  • d = nH 内の各オブジェクトから n レベル下の階層を検索します。

  • d = 0H 内のオブジェクトと同じレベルのみを検索します。

  • d = infH 内のオブジェクトから下の全レベルを検索します。これは既定値です。

関数ハンドル。入力配列 H 内の各オブジェクトについて評価される関数として指定します。この関数は、一致がある (true) か否 (false) かを示すスカラーの論理値を返さなければなりません。

出力引数

すべて展開する

検索で検出されたオブジェクト。ハンドル配列として返されます。

属性

Accesspublic

メソッドの属性の詳細については、メソッドの属性を参照してください。

特定のプロパティ値をもつオブジェクト

特定のプロパティ値をもつオブジェクトを検索します。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

1 要素のみが動的プロパティを定義するボタン オブジェクトの配列を作成します。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 オプションがありますが、すべてのクラスがこのオプションをサポートしているわけではありません。この例では、-regexp オプションの代わりに、-function オプションを使用して、関数から正規表現を使用します。

このクラスは、オブジェクト配列を作成する静的メソッドを定義します。各オブジェクトには 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 の優先順位規則に従います。詳細については、演算子の優先順位を参照してください。

  • cell 配列内のグループ化により優先順位を制御します。

拡張機能

スレッドベースの環境
MATLAB® の backgroundPool を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool を使用してコードを高速化します。

バージョン履歴

R2008a で導入

参考