Main Content

입력값 구문 분석기 유효성 검사(Validation) 함수

여기에서는 사용자 지정 함수 입력값을 검사하기 위해 입력값 구문 분석기에 전달할 유효성 검사 함수를 정의하는 방법을 보여줍니다.

입력값 구문 분석기 메서드인 addRequired, addOptional, addParameter는 각각 유효성 검사 함수에 대한 선택적 핸들을 받습니다. 골뱅이 기호(@)를 사용하여 함수 핸들을 지정합니다.

유효성 검사 함수는 단일 입력 인수를 받고 스칼라 논리값(true 또는 false) 또는 오류를 반환해야 합니다. 유효성 검사 함수가 false를 반환하는 경우 입력값 구문 분석기는 오류를 발생시키고 함수는 처리를 중지합니다.

유효성 검사 함수를 정의하는 방법으로는 여러 가지가 있습니다.

  • ischar 또는 isnumeric과 같은 기존의 MATLAB® 함수를 사용합니다. 예를 들어, num이라는 필수 입력값이 숫자형인지 검사합니다.

    p = inputParser;
    checknum = @isnumeric;
    addRequired(p,'num',checknum)
    
    parse(p,'text')
    The value of 'num' is invalid. It must satisfy the function: isnumeric.
  • 익명 함수를 생성합니다. 예를 들어, 해당 입력값 num이 0보다 큰 숫자형 스칼라인지 검사합니다.

    p = inputParser;
    checknum = @(x) isnumeric(x) && isscalar(x) && (x > 0);
    addRequired(p,'num',checknum)
    
    parse(p,rand(3))
    The value of 'num' is invalid. It must satisfy the function: @(x) isnumeric(x) && isscalar(x) 
    && (x>0).
  • 자신만의 고유한 함수를 정의합니다. 일반적으로 이러한 함수는 주 함수가 있는 동일한 파일에 로컬 함수로 정의합니다. 예를 들어, usenum.m이라는 파일에 usenum에 대한 입력값 num이 0보다 큰 숫자형 스칼라가 아닌 경우 사용자 지정 오류 메시지를 발생시키는 checknum이라는 로컬 함수를 정의합니다.

    function usenum(num)
       p = inputParser;
       addRequired(p,'num',@checknum);
       parse(p,num);
    
    function TF = checknum(x)
       TF = false;
       if ~isscalar(x)
           error('Input is not scalar');
       elseif ~isnumeric(x)
           error('Input is not numeric');
       elseif (x <= 0)
           error('Input must be > 0');
       else
           TF = true;
       end
    

    유효하지 않은 입력값을 사용하여 함수를 호출합니다.

    usenum(-1)
    Error using usenum (line 4)
    The value of 'num' is invalid. Input must be > 0

참고 항목

|

관련 예제

세부 정보