如何实现类似cellfun的功能?
How to implement a function similar to cellfun?
我的问题是关于将参数传递给另一个函数;我不知道如何划分 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]})
您需要使用 cellfun
对 varargin
中每个元素中的相应条目进行分组
inputs = cellfun(@(varargin)varargin, varargin{:}, 'UniformOutput', false);
匿名函数 @(varargin)varargin
接受可变数量的输入 (varargin
) 作为元胞数组,然后简单地 returns 这个元胞数组。它实际上与功能没有什么不同:
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
我的问题是关于将参数传递给另一个函数;我不知道如何划分 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]})
您需要使用 cellfun
对 varargin
inputs = cellfun(@(varargin)varargin, varargin{:}, 'UniformOutput', false);
匿名函数 @(varargin)varargin
接受可变数量的输入 (varargin
) 作为元胞数组,然后简单地 returns 这个元胞数组。它实际上与功能没有什么不同:
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