验证函数参数的数量
本例介绍如何检查您的自定义函数是否接收有效数量的输入或输出参数。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
时,不超出参数的最大数量。
通过 narginchk 进行输入检查
在名为 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
通过 nargoutchk 进行输出检查
在名为 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.