MATLAB:3-D数组的2-D结构数组(包含向量)?

时间:2011-03-04 01:38:20

标签: arrays matlab data-structures multidimensional-array

我有一个结构'单元'的二维数组,每个结构都包含许多向量:

cell(1,1).U = [1 2 3];
cell(1,2).U = [4 5 6];
cell(2,1).U = [7 8 9];
cell(2,2).U = [0 1 2];

我想将数据提取到三维数组A(i,j,k)。

使用单元格样式提取返回1x3单元格,其内容为

>> {cell.U}
ans = {[cell(1,1).U]   [cell(1,2).U]   [cell(2,1).U]   [cell(2,2).U]}

因此,使用cell2mat()将其转换为矩阵,如:

cell2mat(ans)

返回一个3x4数组。

理想情况下,我想要一个2x2x3数组,以便保留索引i和j。有没有办法(没有循环)来实现这个目标?

1 个答案:

答案 0 :(得分:1)

使用CATRESHAPE。另外,不要调用变量cell,因为这是一个内置函数。

>> c(1,1).U = [1 2 3];
c(1,2).U = [4 5 6];
c(2,1).U = [7 8 9];
c(2,2).U = [0 1 2];


>> out = cat(1,c.U)
>> out = reshape(out,2,2,3)
out(:,:,1) =
     1     4
     7     0
out(:,:,2) =
     2     5
     8     1
out(:,:,3) =
     3     6
     9     2