Main Content

验证函数参量的数量

本例介绍如何检查您的自定义函数是否接收有效数量的输入或输出参量。MATLAB® 自动执行一些参量检查。对于其他情况,您可以使用 narginchknargoutchk

自动参量检查

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.

使用 narginchknargoutchk 函数验证您的函数接收的参数数量是否满足以下条件:

  • 达到必需参量的最小数量。

  • 当您的函数使用 vararginvarargout 时,不超出参量的最大数量。

通过 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.

另请参阅

|

相关主题