在Matlab

时间:2015-09-28 03:30:20

标签: arrays matlab reshape

我有一组2D(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个垂直网格点,每个点(x,y,时间,a,b,c等)的15组数据,30个时间戳,9个例。

我一直在使用Matlab中的reshape函数,但似乎不可能将数组重新塑造成我希望的方式。

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

1 个答案:

答案 0 :(得分:0)

所以我似乎找到了答案。我尝试了一个更小的数组,事实证明组织重塑元素的方法是把它作为:

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

然后,将数组重新排列为X,Y,数据,时间,案例,这是排列问题。

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