我想将一个函数应用于单元格数组的每个元素 - 所以我有cellfun
。但是,该函数需要两个额外的参数(一个字符串和一个向量),我希望它对于单元格数组的所有元素保持不变;即我想做类似的事情:
cellfun(@myfun, cellarray, const1, const2)
含义:
for i = 1:numel(cellarray),
myfun(cellarray{i}, const1, const2);
end
有没有办法在不创建包含numel(cellarray)
和const1
const2
副本的中间单元格数组的情况下执行此操作?
答案 0 :(得分:16)
您可以使用anonymous function使用另外两个参数调用myfun
来执行此操作:
cellfun(@(x) myfun(x,const1,const2), cellarray)
答案 1 :(得分:4)
另一个技巧是在索引上使用ARRAYFUN:
arrayfun(@(k) myfun(cellarray{k},const1,const2), 1:numel(cellarray))
如果myfun
的返回值不是标量,您可能需要设置'UniformOutput',false
选项。