我有一个单元格数组,其中每个单元格包含一个矩阵(不同大小)。我想,例如,采用矩阵的所有第二列提供如下命令:
aux = cArray{:}(:,2)
我想要获得的结果是一个单元格数组,其中每个单元格包含原始矩阵的第二列,但命令不起作用(我甚至可以看到为什么,因为输出cArray {:}不是矩阵......) 是否有一个紧凑的命令来获得我想要的东西而不是填充单元阵列的循环?
答案 0 :(得分:4)
它不起作用的原因是使用{:}
索引单元格数组会产生comma-separated list,这不再是可索引的。您可以将其视为" unwrapped"用逗号分隔的单元格数组的内容。
您可以使用cellfun
实现所需目标:
result = cellfun(@(x) x(:,2), cArray, 'uniformoutput', false);
这将匿名函数@(x) x(:,2)
应用于每个单元格的内容,并将结果打包到单元格数组中。