将值传递给MatLab中的函数

时间:2013-01-15 12:38:54

标签: function matlab

  

可能重复:
  Default Arguments in Matlab

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

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

A = 50;
B = 20;

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

end

function test2

C = 1000;
D = 500;

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

display(A)
display(B)

end

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

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

2 个答案:

答案 0 :(得分:5)

您可以将Matlab的varargin用于此目的,例如

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

答案 1 :(得分:1)

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

检查是否存在输入:

if(~exist('A'))
 A = default;
end

注意使用exists('A')而不是存在(A) - 如果A由于未被传递而不存在,那么这将引发错误。

可选地

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

这两种方法都有些混乱,如果你有很多输入你想要是可选的,那么你可以使用matlab类inputParser

doc inputParser

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