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