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