我正在尝试将函数应用于单元格数组中每个单元格的特定列。我熟悉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.这不是我想要的。
这是如何做:
result = cellfun(@(x) [x(:,1) x(:,2)*100], cellArray, 'un', 0);
cellfun
和其他*fun
s(bsxfun
除外)是循环的包装器。把它们想象成一个循环,你就会知道如何申请。