9

我想对单元格数组的每个元素应用一个函数——所以我有cellfun这个。但是,该函数需要两个额外的参数(一个字符串和一个向量),我想为元胞数组的所有元素保持不变;即我想做类似的事情:

cellfun(@myfun, cellarray, const1, const2)

意义:

for i = 1:numel(cellarray),
  myfun(cellarray{i}, const1, const2);
end

有没有办法在不创建包含andnumel(cellarray)副本的中间元胞数组的情况下做到这一点?const1const2

4

2 回答 2

16

您可以使用使用两个附加参数调用的匿名函数来执行此操作:myfun

cellfun(@(x) myfun(x,const1,const2), cellarray)
于 2010-07-19T14:23:01.210 回答
4

另一个技巧是在索引上使用 ARRAYFUN:

arrayfun(@(k) myfun(cellarray{k},const1,const2), 1:numel(cellarray))

如果 的返回值myfun不是标量,您可能需要设置该'UniformOutput',false选项。

于 2010-07-19T19:46:27.637 回答