如何将此2D阵列重塑为4D阵列?

时间:2017-11-28 15:47:50

标签: matlab multidimensional-array reshape

我有以下形式的层流火焰速度的二维阵列:

EGR1

有28种不同的初始温度(T1-T28),13种不同的初始压力(P1-P13)和5种不同的燃料 - 空气比(phi1-phi5)。 EGR水平不会改变(S),然后产生的火焰速度列为P2

所以这是一个大小的二维数组(1820,5)。我想在MATLAB中将其转换为4D数组,格式为:A(5,5,13,​​28)。因此,每页在特定压力和温度下的燃料空气比为5,即5×5。下一页(第三维)将压力更改为reshape,但保持温度相同。最后,第四维增加了初始温度。

我熟悉permuteMaterial函数,但似乎无法达到我想要的效果。任何人都可以伸出援手吗?

1 个答案:

答案 0 :(得分:2)

这应该可以为您提供所需的结果,假设data2D位于您在示例中提供的表单中:

data4D = permute(reshape(data2D, [13 5 28 5]), [2 4 1 3]);

首先,请注意,在2D数据中,第二列(P)循环最快,然后是第三列(phi),然后是第一列(T)。这就是我在reshape步骤中选择[13 5 28 5]的原因,这会产生一个4D矩阵,其中P在第一维上变化,phi跨越第二维,T横跨第三个,以及第四个行数据。

然后,permute步骤只需按[2 4 1 3]的顺序重新组织维度,以使phi在第一维度上变化,而行数据在第二维度上变化,P跨越第三个,第四个T

相关问题