我想创建一个数组矩阵。所以,我想要一个a
- by - b
矩阵,其中每个元素M(i,j)
实际上是一个列数组。这相当于C中的三维数组。
我在Matlab中可以看到的唯一解决方案是创建一个三维矩阵。但是,第三个维度是另一个矩阵,而不是列数组。
解决方案是什么?
答案 0 :(得分:0)
Matlab中的3D矩阵可以很好地工作,你可以像这样提取矢量:
M = ones(4,5,6); % 4x5 matrix of 6-element vectors
V = M(2,3,:) % the vector on position (2,3)
更灵活的解决方案虽然在数据访问速度方面受到极小的损失,但却是一个单元阵列:
M = repmat({ones(6,1)}, 4, 5); % 4x5 cell array of 6-element vectors
V = M{2,3} % the vector on position (2,3)
答案 1 :(得分:0)
与CST-Link一样,您可以添加squeeze()
:
M = randi(3, [4,5,6]);
v = squeeze(M(1,3,:))
使用单元格数组处理具有可变长度的第三维。但是如果它们都具有相同的长度,我将使用3-D矩阵(更少的内存开销,并且您可以从任何维度轻松地获取矢量)。