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
を文字ベクトルまたは string スカラーとして指定します。
入力引数
出力引数
例
特定のプロパティ値をもつオブジェクト
特定のプロパティ値をもつオブジェクトを検索します。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 配列内のグループ化により優先順位を制御します。
バージョン履歴
R2008a で導入