MATLAB:将cellfun应用于每个单元格的特定列

时间:2017-12-20 09:04:05

标签: matlab cell-array

我正在尝试将函数应用于单元格数组中每个单元格的特定列。我熟悉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.这不是我想要的。

1 个答案:

答案 0 :(得分:4)

以下是:

result = cellfun(@(x) [x(:,1) x(:,2)*100], cellArray, 'un', 0);

cellfun和其他*fun s(bsxfun除外)是循环的包装器。可以将其视为一个循环,并且您知道如何申请。