Function 在MatLab中将值传递到函数中

Function 在MatLab中将值传递到函数中,function,matlab,Function,Matlab,可能重复: 我在Matlab中有两个函数,test1和test2,如下所示 function [C,D] = test1(A,B) A = 50; B = 20; C = A + B; D = A - B; end 及 现在我想做的是在函数test1中为A和B设置默认值,但也能够将来自另一个函数(如函数test2)的不同值传递到函数test1中。因此,在函数test1中,默认情况下将A和B设置为50和20,但在函数test2中,可以用1000和500替换它们,并获得等效的C和D结果(在

可能重复:

我在Matlab中有两个函数,test1和test2,如下所示

function [C,D] = test1(A,B)

A = 50;
B = 20;

C = A + B;
D = A - B;

end

现在我想做的是在函数test1中为A和B设置默认值,但也能够将来自另一个函数(如函数test2)的不同值传递到函数test1中。因此,在函数test1中,默认情况下将A和B设置为50和20,但在函数test2中,可以用1000和500替换它们,并获得等效的C和D结果(在1000和500的情况下,C和D的结果分别为1500和500)

我该怎么做?任何帮助都将不胜感激。谢谢

您可以使用Matlab实现此目的,例如:

function [C,D] = test1(varargin)

A = 50;
B = 20;
if nargin > 0
  A = varargin{1};
end
if nargin > 1
  B = varargin{2};
end

C = A + B;
D = A - B;

end
你可以使用Matlab来达到这个目的,例如

function [C,D] = test1(varargin)

A = 50;
B = 20;
if nargin > 0
  A = varargin{1};
end
if nargin > 1
  B = varargin{2};
end

C = A + B;
D = A - B;

end

有几种方法可以做到这一点

检查是否存在输入:

if(~exist('A'))
 A = default;
end
注意使用exist('A')而不是exist(A)-如果A由于未被传递而不存在,那么这将抛出一个错误

或者

if(nargin < 2)
 B = default_b;
end
if (nargin == 0)
 A = default_a;
end

关于更多的细节,我不在这里描述它,因为它非常全面(对于简单的情况,可能有些过分)

有几种方法可以做到这一点

检查是否存在输入:

if(~exist('A'))
 A = default;
end
注意使用exist('A')而不是exist(A)-如果A由于未被传递而不存在,那么这将抛出一个错误

或者

if(nargin < 2)
 B = default_b;
end
if (nargin == 0)
 A = default_a;
end

关于更多的细节,我不在这里描述它,因为它非常全面(对于简单的情况,可能有点过分)

exist方法也是我的第一个想法,但是您如何进行函数调用呢?我认为除非你每次调用函数之前都对它进行评估,否则这是行不通的。@Dennis
function testfun(testvar,varargin)if(exist('testvar'))disp('moo')end sprintf('%f\n',nargin)
>testfun ans=0.000000>>testfun(1)moo ans=1.000000
exist方法也是我的第一个想法,那么,您将如何进行函数调用呢?我认为除非您每次调用函数之前都对其进行评估,否则这是不可行的。@Dennis
函数testfun(testvar,varargin)if(exist('testvar'))disp('moo')end sprintf('%f\n',nargin)
>testfun ans=0.000000>>testfun(1)moo ans=1.000000