我是MATLAB世界的新手。环顾四周,我遇到了一个看起来像
的功能function out = f(x, y, z)
narginchk(3, 3);
out = x * y * z; % contents simplified for illustration purpose
end
我无法自信地说“narginchk”是多余的,但对我来说肯定是这样。如果函数签名alreadys需要(这里)正好3个输入,有人可以告诉我是否有任何合理的理由将其放入?
谢谢!
答案 0 :(得分:3)
即使没有varargin
,调用者也可以省略参数。因此需要narginchk
来抓住它。
varargin
主要用于标记选项,您无法仅根据位置为参数指定有意义的名称。
这是一个小型演示,默认情况下MATLAB使所有参数都是可选的:
function out = f(x, y, z)
narginchk(2, 3);
if nargin < 3
z = 17;
end
out = x * y * z;
end
>> f(1,2)
ans =
34
部分混淆是您收到的错误消息的措辞。 MATLAB说“没有足够的输入参数。”这意味着“该函数使用了一个缺失的参数。”
答案 1 :(得分:1)
在这种形式下,它是多余的。但是,如果没有足够的参数传递给函数,则会抛出不同的错误,具体取决于您是否使用narginchk
。
如果您尝试在没有f(1,2)
的情况下执行narginchk(3,3)
,则抛出的错误类型为MATLAB:minrhs
。如果narginchk(3,3)
到位,则抛出的错误类型为MATLAB:narginchk:notEnoughInputs
。
但是,如果您尝试使用太多参数,例如f(1,2,3,4)
,错误始终为MATLAB:TooManyInputs
因此,对于具有固定数量参数的函数,使用narginchk
会产生影响,但我不认为您可以获得的不同类型的错误有很多实际用途。< / p>