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
버튼 객체들로 구성된 배열을 만들고, 배열 요소 중 하나의 객체에만 동적 속성을 정의합니다. ButtonCoord
라는 동적 속성을 가진 객체의 핸들을 가져오기 위해 findobj
를 사용합니다.
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 우선 순위 규칙을 따릅니다. 자세한 내용은 연산자 우선 순위 항목을 참조하십시오.
셀형 배열 내에서 그룹화하여 우선 순위를 제어할 수 있습니다.
확장 기능
버전 내역
R2008a에 개발됨