在 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])
我有一组二维 (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])