В этом примере показов, как проверить, получит ли ваша пользовательская функция допустимое количество входа или выходных аргументов. 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.
Задайте функцию в файле с именем 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
Задайте функцию в файле с именем 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.