2011-10-23 2 views
16

변수를 테스트/검증하는 방법은 matlab의 함수 핸들입니까?변수를 테스트하는 방법은 Matlab의 함수 핸들인지 여부입니다

[email protected](x)x+1 
isFunctionHandle(f) 

is* 빌드 함수 이러한 종류의 테스트를 지원하지 보인다 :

이 같은 일이 될 수있다? 아무도 몰라?

f = @(x)x+1 

f = 

    @(x)x+1 

>> class(f) 

ans = 

function_handle 

+0

또한 함수 핸들 일뿐만 아니라 유효성 (테스트 할 코드가 있음)을 테스트하는 [이 질문 (http://stackoverflow.com/q/19307726/2778484)]도 참조하십시오. – chappjc

답변

29

올바른 방법은 즉, is* 기능을 이용하여 실제로 isa이다 (이 텍스트 'function_handle'를 포함하는 문자열입니다) : 많은 감사

4

당신은 class() 기능을 사용할 수 있습니다 :

if isa(f, 'function_handle') 
    % f is a handle 
else 
    % f is not a handle 
end 

편집 : 완성을 위해, class()을 사용하면 무언가가 함수 핸들인지 확인하는 데 도움이된다는 점을 지적하고자합니다. 그러나 isa과는 달리 MATLAB의 작동 방식에 영향을 미치는 객체 지향 프로그래밍 (OOP)과 같은 MATLAB의 다른 측면 (예 : 플롯 기능, 컨트롤 도구 상자, 식별 도구 상자, ... OOP 기반).

OOP에 익숙한 사람들을 위해

: isa 또한, someClass에 대한 x 객체의 슈퍼 유형을 확인하는 정확한 유형에 대한 strcmp(class(x), 'someClass') 분명히만을 검사하는 동안.

OOP를 모르는 사람들에게 : 나는 strcmp(class(x), 'someClass') 대신 isa(x, 'someClass')을 사용하는 것이 가장 편리하고 (공통적 인) 동작 인 것이 좋습니다.

관련 문제