Matlab 如何检查函数调用中是否提供了参数?

Matlab 如何检查函数调用中是否提供了参数?,matlab,Matlab,假设我有一个函数,dummy,有两个参数。在函数调用中未提供参数时,参数可以具有默认值。但是我怎么知道没有提供参数 我知道我可以像这样使用nargin function dummy(arg1, arg2) if nargin < 2 arg2 = 0; end if nargin < 1 arg1 = 0; end % function body 函数虚拟(arg1、arg2) 如果nargin

假设我有一个函数,
dummy
,有两个参数。在函数调用中未提供参数时,参数可以具有默认值。但是我怎么知道没有提供参数

我知道我可以像这样使用nargin

function dummy(arg1, arg2)
if nargin < 2
    arg2 = 0;
end
if nargin < 1
    arg1 = 0;
end
% function body
函数虚拟(arg1、arg2)
如果nargin<2
arg2=0;
结束
如果nargin<1
arg1=0;
结束
%功能体
我想知道是否可以根据参数名称检查是否提供了参数?类似于提供的
的内容(arg2)=false

我这样问是因为,有时我想在参数列表的前面添加新参数(因为它可能没有默认值),然后我必须更改所有的
,如果nargin…
。如果我可以按姓名检查,则无需更改任何内容。

我总是这样做:

if ~exist('arg1','var')
  arg1=0;
end
正如@Andrey所说,使用此解决方案,您可以更改函数参数的数量/顺序,而无需更改代码。
nargin
解决方案并非如此

正如@yuk所说,如果您想允许跳过参数,可以执行以下操作:

if ~exist('arg1','var') || isempty(arg1)
  arg1=arg1DefaultValue;
end

这比nargin好得多,因为如果您更改函数中参数的顺序,您不必更改代码isempty(arg1),因此用户可以跳过
arg1
,但提供
arg2
。当然if
arg1
不能为空。A很遗憾,但我认为它并没有真正回答问题。无论如何,我编辑了答案,而且我认为您必须使用
| |
(短路运算符)以确保在
arg1
不存在时没有错误。请注意,这里的跳过意味着提供
[]
{}
来代替参数,而不是Visual Basic/VBScript样式的跳过,其中一个放置多个逗号,如下所示
f(,,a,,,a)