如何在MATLAB中将2D矩阵的单元阵列转换为多维数组

时间:2015-11-06 17:11:28

标签: arrays matlab matrix multidimensional-array

在MATLAB中,我有一个

的已定义单元格数组C

size(C) = 1乘150

此单元T的每个矩阵C的大小为

size(C{i}) = 8 by 16

我想知道是否有办法定义一个大小为8×16×150的新的多维(3D)矩阵M

那时我写命令size(M)我得到8乘16乘150

谢谢!期待您的回答

1 个答案:

答案 0 :(得分:2)

如果我正确理解你的问题,你有一个150个单元格的单元格数组,每个单元格元素都是8 x 16,你希望在第三维中将所有这些矩阵叠加在一起,这样你就有了尺寸为8 x 16 x 150的3D矩阵。

这很简单:

M = cat(3, C{:});

这种语法可能看起来很奇怪,但它非常有效。命令cat执行矩阵的连接,其中第一个参数是要连接的维...因此在您的情况下,这是第三个维度,后面的参数是您要连接的矩阵,以便最终矩阵。

执行C{:}会创建所谓的comma-separated list。这相当于在MATLAB中键入以下语法:

C{1}, C{2}, C{3}, ..., C{150}

因此,通过cat(3, C{:});真正做的是:

cat(3, C{1}, C{2}, C{3}, ..., C{150});

因此,你将把所有150个单元格连接在第三维中并将它们连接在一起。但是,不必键入150个单独的单元格条目,而是通过C{:}创建逗号分隔列表来封装。