我在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)
我该怎么做?任何帮助将不胜感激。感谢
答案 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
更多细节,我在这里没有描述,因为它非常全面(对于简单的情况可能有点过分)