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

MATLAB: Apply cellfun to specific columns of every cell

我正在尝试将函数应用于元胞数组中每个元胞的特定列。我熟悉 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 和其他 *funbsxfun 除外)是循环的包装器。把它们想象成一个循环,你就会知道如何应用。