0

可能重复:
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)

我怎样才能做到这一点?任何帮助将不胜感激。谢谢

4

2 回答 2

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
于 2013-01-15T12:42:17.803 回答
1

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

检查输入是否存在:

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

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

doc inputParser

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

于 2013-01-15T12:46:38.120 回答