논리식에 있는 핸들
핸들 객체는 논리값 true
또는 false
로 표현되지 않습니다. 관심 항목의 상태를 테스트하고 논리값을 반환하는 함수를 사용해야 합니다.
핸들이 유효한 경우
isgraphics
를 사용하여 변수에 유효한 그래픽스 객체 핸들이 포함되어 있는지 여부를 확인합니다. 예를 들어, hobj
가 작업 공간의 변수라고 가정하겠습니다. 이 변수에 대한 작업을 수행하기 전에 다음과 같이 유효성을 테스트합니다.
if isgraphics(hobj) ... end
다음과 같이 객체 유형을 확인할 수도 있습니다.
if isgraphics(hobj,'figure') ...% hobj is a figure handle end
결과가 비어 있는 경우
논리문에 직접 빈 객체를 사용할 수 없습니다. isempty
를 사용하여 논리문에 사용할 수 있는 논리값을 반환합니다.
일부 속성에는 다른 객체에 대한 핸들이 포함되어 있습니다. 다른 객체가 존재하지 않는 경우 속성에 빈 객체가 포함됩니다.
close all
hRoot = groot;
hRoot.CurrentFigure
ans = 0x0 empty GraphicsPlaceholder array.
예를 들어, 루트 CurrentFigure
속성을 쿼리하여 현재 Figure가 있는지 여부를 확인하려면 다음과 같이 isempty
함수를 사용합니다.
hRoot = groot; if ~isempty(hRoot.CurrentFigure) ... % There is a current figure end
코드 실행 시 빈 객체가 발생할 수 있는 또 다른 경우는 핸들을 검색하는 경우입니다. 예를 들어, Figure의 Tag
속성을 문자형 벡터 'myFigure'
로 설정하고 findobj
를 사용하여 이 Figure의 핸들을 가져온다고 가정하겠습니다.
if isempty(findobj('Tag','myFigure')) ... % That figure was NOT found end
findobj
는 일치하는 항목이 없을 경우 빈 객체를 반환합니다.
핸들이 같은 경우
핸들이 같은 상태로는 두 가지가 있습니다.
두 핸들이 동일한 객체를 참조합니다(
==
로 테스트).두 개의 핸들로 참조되는 객체가 동일한 클래스이고 모든 속성의 값이 동일합니다(
isequal
로 테스트).
Tag
속성의 값이 myFigure
인 특정 Figure에 대한 핸들이 h
인지 여부를 확인하고자 한다고 가정하겠습니다.
if h == findobj('Tag','myFigure') ...% h is correct figure end
각기 다른 객체가 동일한 상태에 있는지 여부를 확인하려면 다음과 같이 isequal
을 사용합니다.
hLine1 = line; hLine2 = line; isequal(hLine1,hLine2)
ans = 1