簡體   English   中英

如何重塑5維矩陣矩陣以獲得3維數組?

[英]How to reshape a five dimensional matlab array to get a three dimensional array?

我有一個多維Matlab數組,該數組是使用ndgrid命令創建的變量通過操作創建的:

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

其中z = r = 0,t是時間值的向量,E是大小= [10,80]的二維矩陣

我想將其整形為size = [10,80,length(t)]的三維數組,其中將向量t復制為對應於E矩陣值的10 * 80值的每一個的三維。

我怎樣才能做到這一點? -因為我知道reshape函數具有填充新數組的特定順序?

我認為您可以使用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])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM