我正在尝试将函数应用于单元格数组中每个单元格的特定列。我熟悉cellfun
,但是,我只是在努力使用正确的语法来识别特定列(即将cellArray
传递给cellfun
的正确方法是什么(第二个输入参数))?
这是我的玩具示例。我想将每个单元格的第二列乘以100,而第一列不受影响。
cellArray = cell(2,2);
cellArray{1,1} = [1,1 ; 2,2 ; 3,3];
cellArray{1,2} = [1,4 ; 2,5 ; 3,6];
cellArray{2,1} = [1,7 ; 2,8 ; 3,9];
cellArray{2,2} = [1,10 ; 2,11 ; 3,12];
result = cellfun(@times, cellArray, repmat({100}, 2, 2), 'UniformOutput', false);
只需将整个cellArray
传递给cellfun
,所有列都会乘以100.这不是我想要的。
答案 0 :(得分:4)
以下是:
result = cellfun(@(x) [x(:,1) x(:,2)*100], cellArray, 'un', 0);
cellfun
和其他*fun
s(bsxfun
除外)是循环的包装器。可以将其视为一个循环,并且您知道如何申请。