2017-06-20 36 views
1

我有以下多維數組:替代較短方法來排列和重塑的多維陣列

a(:,:,1) = 
    11 12 13 
    21 22 23 

a(:,:,2) = 
    21 22 23 
    31 32 33 

a(:,:,3) = 
    31 32 33 
    41 42 43 

最終的結果如下所示:

e = 
    11 21 31 
    12 22 32 
    13 23 33 
    21 31 41 
    22 32 42 
    23 33 43 

爲了得到陣列E,I做了以下幾點:

b=permute(a,[2,1,3]) 
c=reshape(b,1,6,[]) 
d=permute(c,[2,1,3]) 

是否有更清潔或更優雅的方式來實現同樣的結果?

回答

2

這裏置換使用一次:

b = permute(a,[2 1 3]); 
result = reshape(b, [], 3) 
+0

我覺得這個答案適合我的問題最好的。感謝所有的貢獻。 – Crysthius

0

你可以像下面:

reshape([a(:,:,1);a(:,:,2);a(:,:,3)].',6,3)