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