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

问题描述 投票:1回答:1

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

matlab cell-array
1个回答
4
投票

这是如何做:

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

cellfun和其他*funs(bsxfun除外)是循环的包装器。把它们想象成一个循环,你就会知道如何申请。

© www.soinside.com 2019 - 2024. All rights reserved.