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)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형 스칼라로 지정합니다.

입력 인수

모두 확장

검색될 객체로, 객체 핸들로 구성된 배열로 지정됩니다. '-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

버튼 객체들로 구성된 배열을 만들고, 배열 요소 중 하나의 객체에만 동적 속성을 정의합니다. 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 우선 순위 규칙을 따릅니다. 자세한 내용은 연산자 우선 순위 항목을 참조하십시오.

  • 셀형 배열 내에서 그룹화하여 우선 순위를 제어할 수 있습니다.

확장 기능

스레드 기반 환경
MATLAB®의 backgroundPool을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool을 사용해 코드 실행 속도를 높일 수 있습니다.

버전 내역

R2008a에 개발됨

참고 항목