MATLAB 索引矩阵元胞数组中的所有元胞

MATLAB indexing all the cells in a cell array of matrices

我有一个元胞数组,其中每个元胞包含一个矩阵(不同大小)。例如,我想获取矩阵的所有第二列,提供如下命令:

aux = cArray{:}(:,2)

我想要获得的结果是一个元胞数组,其中每个元胞都包含原始矩阵的第二列,但该命令不起作用(我什至可以理解为什么,因为 cArray{ :} 不是矩阵...) 是否有一个紧凑的命令来获得我想要的而不是循环填充元胞数组?

它不起作用的原因是使用 {:} 索引元胞数组会生成 comma-separated list,它不再可索引。您可以将其视为以逗号分隔的元胞数组的 "unwrapped" 内容。

你可以通过cellfun实现你想要的:

result = cellfun(@(x) x(:,2), cArray, 'uniformoutput', false);

这会将匿名函数 @(x) x(:,2) 应用于每个单元格的内容,并将结果打包到一个单元格数组中。