如何对nd数组的每一页进行转置?

时间:2017-09-26 10:15:20

标签: arrays matlab multidimensional-array

我试图弄清楚如何将大量数据导入到特定顺序的3D矩阵中。我已经问了两个问题,但我还没有得到可靠的答案而且还投了票。从那时起,我完成了一些工作,并能够使用reshape函数将数据导入3D矩阵。这不是拍摄实际问题,而是模拟实际问题。

k=1:27 % create a array of 27 data
r=reshape(k,[3,3,3]) % convert the array into 3 x 3 x 3 matrix,

矩阵的第一页和第二页的结果是,数据沿列放置,但我想将它们放在行上,transpose函数不适用于ND数组,我试过使用permute但我没有得到所需的结果,一个解决方案将对每个页面执行transpose,但这会将3D矩阵分解为许多2D矩阵。

r(:,:,1) =

 1     4     7
 2     5     8
 3     6     9

r(:,:,2) =

10    13    16
11    14    17
12    15    18

预期结果应为

r(:,:,1) =

 1     2     3
 4     5     6
 7     8     9

Link to the actual problem is,

由于

1 个答案:

答案 0 :(得分:2)

这是你想要的吗?

result = permute(r, [2 1 3]);

这会排除前两个维度。对于您的示例r

>> k = 1:27;
>> r = reshape(k, [3,3,3]);
>> result = permute(r, [2 1 3]);
>> result
result(:,:,1) =
     1     2     3
     4     5     6
     7     8     9
result(:,:,2) =
    10    11    12
    13    14    15
    16    17    18
result(:,:,3) =
    19    20    21
    22    23    24
    25    26    27