我的问题是将参数传递给另一个函数;我不知道如何划分varargin
并将值作为参数传递。
function A = mycellfun(func, varargin)
A = cell(size(varargin{1}));
for ii = 1:numel(A)
A{i} = func(varargin{ ??? })
end
end
...
S = mycellfun(@plus, {1 [2 3]}, {4 [5 6]})
答案 0 :(得分:1)
您需要使用cellfun
对varargin
inputs = cellfun(@(varargin)varargin, varargin{:}, 'UniformOutput', false);
匿名函数@(varargin)varargin
接受可变数量的输入(varargin
)作为单元格数组,然后只返回此单元格数组。它实际上与功能没有什么不同:
function v = func(varargin)
v = varargin;
end
例如:
varargin = {{1, 2, 3}, {4, 5, 6}};
inputs = cellfun(@(varargin)varargin, varargin{:}, 'UniformOutput', false);
% {{1, 4}, {2, 5}, {3, 6}}
然后你可以遍历inputs
,每个单元格元素将包含给定迭代的所有输入。然后,您可以使用{:}
索引创建逗号分隔列表,并将其作为输入传递给func
。
A = cell(size(inputs));
for k = 1:numel(inputs)
A{k} = func(inputs{k}{:});
end