在 Matlab 中重塑 2D 到 5D 数组

Reshape 2D to 5D array in Matlab

我有一组二维 (M*N) 的数据。该阵列覆盖矩形网格点并包含与时间有关的各种数据。数据写成:

x1  y1 t1 a b c ...
x2  y1 t1 a b c ...
.   .  .  . . . ...
x50 y1 t1 a b c ...
x1  y2 t1 a b c ...
x2  y2 t1 a b c ...
.   .  .  . . . ...
x50 y2 t1 a b c ...
.   .  .  . . . ...
x50 y40 t1 a b c ...
x1  y1 t2 a b c ...
.
.
.
x50 y40 t30 a b c ...

因此数组在保持 y 不变的同时推进 x,并在该点写入数据。 Y 步进到下一个值,x 前进,并写入数据。在最后一个网格点和时间推进之后重复这种书写模式。总共有9个这样的数组。

我想将这个 2D 矩阵转换成这样的 5D 数组:

X , Y , DATA , TIME , CASE

所以这将是 50 个轴向网格点,40 个垂直网格点,每个点的 15 组数据(x,y,时间,a,b,c 等),30 个时间戳,减少 9 例。

我一直在使用 Matlab 中的重塑函数,但似乎无法将数组重塑为我希望的样子。

有人可以提供帮助吗?谢谢!

看来我找到了答案。我尝试了一个小得多的数组,结果发现组织重塑元素的方式是把它写成:

B = reshape(A, [X Y TIME DATA CASE])

然后是排列问题,将数组重新排列为 X、Y、数据、时间、大小写。

B = reshape(B, [1 2 4 3 5])