Matlab:将varargin传递给子子函数

时间:2016-03-16 17:25:52

标签: matlab

因此,将变量参数列表传递给子函数的相当常见的解决方案是传入:

function out = foo(arg1, arg2, varargin)
   % do something
   out = foo2(arg1+arg2, varargin{:});
end

其中varargin {:}是以逗号分隔的单元数组解包。

但是当我想将变量参数列表传递给 SUB-subfunction 时,我遇到了问题,例如

function out = foo2(arg1, varargin)
    tempOut = foo3(varargin{:});
    out = arg1 + tempOut; % Assuming I guarantee nargin >= 2
end

我遇到的问题是:

varargin传入foo2:1 x nargin cell

varargin传入foo3:1 x 1单元格,内容:1 x nargin cell

如何正确解压缩以便我可以正确传入foo3? 谢谢!

1 个答案:

答案 0 :(得分:0)

我的建议是更改foo2foo3

的格式

如果foo2是:

function out = foo2(arg1, myvarargin)
    %// Now myvarargin is a cell array.
    tempOut = foo3(myvarargin);
    out = arg1 + tempOut; % Assuming I guarantee nargin >= 2
end

并将其称为

out = foo2(arg1+arg2, varargin);

它会起作用(取决于foo3的声明)。 这是因为你没有使用"变量参数"在foo2但你有一个输入是一个单元格数组,可以改变大小。但它总是一个输入。