함수 인수 개수에 대한 유효성 검사하기
이 예제에서는 사용자 지정 함수가 유효한 개수의 입력 인수 또는 출력 인수를 받는지를 검사하는 방법을 보여줍니다. MATLAB®은 일부 인수 검사를 자동으로 수행합니다. 이외의 경우에는 narginchk
또는 nargoutchk
를 사용할 수 있습니다.
자동 인수 검사
MATLAB은 함수 정의에서 개수를 확인할 수 있는 경우 함수가 예상보다 많은 인수를 받는지 여부를 검사합니다. 예를 들어, 다음 함수는 최대 2개의 출력값과 3개의 입력값을 받습니다.
function [x,y] = myFunction(a,b,c)
myFunction
에 너무 많은 입력값을 전달하면 MATLAB이 오류를 발생시킵니다. 이런 경우에는 narginchk
를 호출하여 검사할 필요가 없습니다.
[X,Y] = myFunction(1,2,3,4)
Error using myFunction Too many input arguments.
narginchk
함수와 nargoutchk
함수는 함수가 다음을 받는지 확인할 때 사용하십시오.
최소 개수의 필수 인수
최대 개수 이하의 인수(함수가
varargin
또는varargout
을 사용하는 경우)
narginchk를 사용한 입력값 검사
testValues.m
이라는 파일에 최소 두 개의 입력값을 필요로 하는 함수를 정의합니다. 첫 번째 입력값은 다른 입력값과의 비교에 사용될 임계값입니다.
function testValues(threshold,varargin) minInputs = 2; maxInputs = Inf; narginchk(minInputs,maxInputs) for k = 1:(nargin-1) if (varargin{k} > threshold) fprintf('Test value %d exceeds %d\n',k,threshold); end end
지나치게 적은 개수의 입력값으로 testValues
를 호출합니다.
testValues(10)
Error using testValues (line 4) Not enough input arguments.
충분한 개수의 입력값으로 testValues
를 호출합니다.
testValues(10,1,11,111)
Test value 2 exceeds 10 Test value 3 exceeds 10
nargoutchk를 사용한 출력값 검사
mysize.m
이라는 파일에 벡터에 포함된 입력 배열의 차원을 반환하고(size
함수 사용), 선택적으로 각 차원의 크기에 해당하는 스칼라 값을 반환하는 함수를 정의합니다. nargoutchk
를 사용하여, 요청된 개별 크기의 개수가 사용 가능한 차원의 수를 초과하지 않는지 확인합니다.
function [sizeVector,varargout] = mysize(x) minOutputs = 0; maxOutputs = ndims(x) + 1; nargoutchk(minOutputs,maxOutputs) sizeVector = size(x); varargout = cell(1,nargout-1); for k = 1:length(varargout) varargout{k} = sizeVector(k); end
유효한 개수의 출력값으로 mysize
를 호출합니다.
A = rand(3,4,2); [fullsize,nrows,ncols,npages] = mysize(A)
fullsize = 3 4 2 nrows = 3 ncols = 4 npages = 2
지나치게 많은 개수의 출력값으로 mysize
를 호출합니다.
A = 1; [fullsize,nrows,ncols,npages] = mysize(A)
Error using mysize (line 4) Too many output arguments.