입력값 구문 분석기 유효성 검사(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
참고 항목
inputParser
| validateattributes