如何重塑五维matlab数组以获得三维数组?

时间:2015-07-30 14:27:59

标签: matlab

我有一个多维Matlab数组,它是使用ndgrid命令创建的变量创建的:

[Z,R,T,Es] = ndgrid(z,r,t,E)

其中z = r = 0且t是时间值的向量,E是二维矩阵,大小= [10,80]

我想将其重塑为尺寸= [10,80,长度(t)]的三维数组,其中向量t被复制为对应于E的10 * 80值中的每一个的第三维度矩阵值。

我该怎么做? - 我知道重塑函数有一定的顺序,它填充新的数组?

1 个答案:

答案 0 :(得分:0)

我认为您可以使用permuterepmat

来实现这一目标

让我假设t是行向量以方便起见。

octave:41> t
t =

   0.932698   0.658920   0.090389   0.314648   0.509211

octave:42> size(E)
ans =

    10   180

octave:43> P = repmat(permute(t,[3,1,2]), [size(E,1), size(E,2), 1]);
octave:44> size(P)
ans =

    10   180     5

octave:45> P(1:3,1:3, :)
ans =

ans(:,:,1) =

   0.93270   0.93270   0.93270
   0.93270   0.93270   0.93270
   0.93270   0.93270   0.93270

ans(:,:,2) =

   0.65892   0.65892   0.65892
   0.65892   0.65892   0.65892
   0.65892   0.65892   0.65892

ans(:,:,3) =

   0.090389   0.090389   0.090389
   0.090389   0.090389   0.090389
   0.090389   0.090389   0.090389

ans(:,:,4) =

   0.31465   0.31465   0.31465
   0.31465   0.31465   0.31465
   0.31465   0.31465   0.31465

ans(:,:,5) =

   0.50921   0.50921   0.50921
   0.50921   0.50921   0.50921
   0.50921   0.50921   0.50921

我不确定这正是你要找的。但E中的值未在任何位置显示,只保留维度,t的值沿E

中每个元素的第3维重复

注意:如果t是一个cloumn向量,则必须是permute(t, [2,3,1])