Проверьте количество аргументов функции

В этом примере показов, как проверить, получит ли ваша пользовательская функция допустимое количество входа или выходных аргументов. MATLAB® автоматически выполняет некоторые проверки аргументов. В других случаях можно использовать narginchk или nargoutchk.

Автоматические проверки аргументов

MATLAB проверяет, получает ли ваша функция больше аргументов, чем ожидалось, когда она может определить число из определения функции. Для примера эта функция принимает до двух выходов и трех входов:

function [x,y] = myFunction(a,b,c)

Если вы передаете слишком много входов, чтобы myFunctionMATLAB выдает ошибку. Вам не нужно звонить 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 function), и опционально возвращает скалярные значения, соответствующие размерам каждой размерности. Использование 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.

См. также

|

Похожие темы