在MATLAB中,我有一个
的已定义单元格数组C
size(C)
= 1乘150
此单元T
的每个矩阵C
的大小为
size(C{i})
= 8 by 16
我想知道是否有办法定义一个大小为8×16×150的新的多维(3D)矩阵M
那时我写命令size(M)
我得到8乘16乘150
谢谢!期待您的回答
答案 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{:}
创建逗号分隔列表来封装。