[英]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函數具有填充新數組的特定順序?
我認為您可以使用permute
和repmat
實現此目的
為了方便起見,讓我假設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.