В этом примере показано, как проверять, получает ли ваша пользовательская функция верный номер аргументов ввода или вывода. MATLAB® выполняет некоторые проверки аргумента автоматически. Для других случаев можно использовать narginchk или nargoutchk.
MATLAB проверяет, получает ли ваша функция больше аргументов, чем ожидалось, когда это может определить номер из функционального определения. Например, эта функция принимает до двух выходных параметров и три входных параметров:
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.
Задайте функцию в файле с именем 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 функция), и опционально возвращает скалярные значения, соответствующие размерам каждой размерности. Используйте 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.