Matlab 如何实现类似cellfun的功能?

Matlab 如何实现类似cellfun的功能?,matlab,cell-array,function-parameter,Matlab,Cell Array,Function Parameter,我的问题是将参数传递给另一个函数;我不知道如何划分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对varargi

我的问题是将参数传递给另一个函数;我不知道如何划分
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
)作为单元格数组,然后简单地返回此单元格数组。它实际上与函数没有什么不同:

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}}
然后,您可以循环通过
输入
,每个单元格元素将包含给定迭代的所有输入。然后,您可以使用
{:}
索引创建一个逗号分隔的列表,并将其作为输入传递给
func

A = cell(size(inputs));

for k = 1:numel(inputs)
    A{k} = func(inputs{k}{:});
end

好吧,那么你要做的就是使用…
cellfun
…你想提供什么功能,
cellfun
没有?不管它只是一个示例,我的代码都会有所不同。我明白了。但是,在
for
循环中使用
执行操作的方式是
cellfun
。如果你能告诉我们你希望你的函数实际上是什么,那对你会更有好处do@Suever,您已经发布了答案,它解决了我的问题,但是关于您的问题,在我的代码中,我可能会根据当前迭代中
func
的结果更改下一次迭代的参数。在
@(varargin)varargin
一个函数?@saastn不,它是一个输入的单元格数组。我更新了一些解释