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