如何在MATLAB中将矩阵的单元格数组转换为列矩阵?

时间:2016-01-25 17:24:18

标签: arrays matlab matrix

我有一个矩阵的单元格数组,如下所示:

G = 
Columns 1 through 6
    [507x1 double]    [255x1 double]    [130x1 double]    [67x1 double]    [36x1 double]    [19x1 double]

Columns 7 through 9
    [11x1 double]    [6x1 double]    [4x1 double]

这意味着矩阵在单元格数组中。矩阵G总共有507 + 255 + 130 + 67 + 36 + 19 + 11 + 6 + 4 = 1035个元素。我可以使用G{i}命令提取任何单元格。但是,我需要单列或行矩阵中的所有这些1035元素。我尝试了cell2mat(G),但这并不奏效。

我可以在这里创建一个包含所有其他矩阵的矩阵吗?

1 个答案:

答案 0 :(得分:2)

使用cat并垂直连接,或沿第一维连接:

G = cat(1, G{:});

语法G{:}产生所谓的comma-separated list。这相当于你做的事情:

G = cat(1, G{1}, G{2}, ..., G{9});

而不是必须键入要用于连接的所有单个单元格元素,而是G{:}为您解压缩所有这些元素。

次要注意事项

cell2mat基本上以我上面谈到的方式执行cat。如果你看一下cell2mat的来源,它会因为很多健全性检查而变得臃肿,但是函数的核心只是使用cat并利用逗号分隔的列表。我不知道为什么cell2mat不适合你。