如何使用常量额外输入参数应用cellfun(或arrayfun或structfun)?

时间:2010-07-19 13:43:36

标签: matlab function arguments cell-array

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

cellfun(@myfun, cellarray, const1, const2)

含义:

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

有没有办法在不创建包含numel(cellarray)const1 const2副本的中间单元格数组的情况下执行此操作?

2 个答案:

答案 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选项。