Function 在MATLAB中使用varargin作为多个默认值的参数
有没有一种方法可以通过以下方式在MATLAB中使用varargin提供参数 功能Function 在MATLAB中使用varargin作为多个默认值的参数,function,matlab,Function,Matlab,有没有一种方法可以通过以下方式在MATLAB中使用varargin提供参数 功能 func myFunc(varargin) if a not given as argument a = 2; if b not given as argument b = 2; if c not given as argument c = a+b; d = 2*c; end 我想用b=3调用上述函数一次,另一次调用,而上一次调用是在相同的命令窗口中运行的,使用a=3和c=
func myFunc(varargin)
if a not given as argument
a = 2;
if b not given as argument
b = 2;
if c not given as argument
c = a+b;
d = 2*c;
end
我想用b=3调用上述函数一次,另一次调用,而上一次调用是在相同的命令窗口中运行的,使用a=3和c=3,并让b取函数中的默认值。如何使用Varagin实现这一点?这里有两种方法可以实现这一点,这两种方法自2007a(即,很长一段时间!)以来一直可用。有关更新得多的方法,请参阅
nargin
,确保您的输入始终有序nargin
:稍微简单一点,但依赖于一致的输入顺序
function myFunc( a, b, c )
if nargin < 1 || isempty(a)
a = 2;
end
if nargin < 2 || isempty(b)
b = 2;
end
if nargin < 3 || isempty(c)
c = a + b;
end
end
这将像
myFunc('b',4)一样被使用代码>。由于名称-值对,这种方法对输入顺序也是不可知的,因此您还可以执行类似于myFunc('c',3',a',1)的操作代码>以下是编写函数的最新和最好的方法(使用R2019b)
请注意,此语法不允许您直接在参数
块中说options.C=options.A+options.B
在MATLAB
someFcn('A', 3)
在MATLAB>=R2021a中,可以使用新的name=value
语法
someFcn(B = 7)
争论按顺序进行。如果给出2个参数,则函数定义了参数1和2。选项是为未使用的参数传递空数组,检查传递了多少个参数,并对1或2个参数执行不同的操作,或者使用名称-值对。哇,我不知道这种方法-我的直觉反应是=
语法非常可怕;函数调用中的赋值似乎与现有的MATLAB约定背道而驰!这里的选项
输入是现在的关键字还是因为在参数
块中使用而变得重要?旧式的'name',value
配对与选项
pre 21a完全不起作用,还是=
语法只是首选?您可以根据自己的喜好互换使用name=value
或'name',value
)名称选项
没有什么神奇之处-只要在参数
块中使用结构
语法,就可以使用任何你喜欢的东西。(当然,您还可以通过类型验证等方式对此进行补充)。
someFcn('A', 3)
someFcn(B = 7)