Main Content

함수 인수 개수에 대한 유효성 검사하기

이 예제에서는 사용자 지정 함수가 유효한 개수의 입력 인수 또는 출력 인수를 받는지를 검사하는 방법을 보여줍니다. 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.

참고 항목

|

관련 항목