2017-09-26 84 views
1

我想弄清楚如何將大量的數據導入到3D矩陣到特定的順序。我已經提出了兩個問題,但我還沒有得到可靠的答案,並且也投了票。從那以後,我做了一些工作,並能夠使用reshape函數將數據導入3D矩陣。這不是拍攝實際問題,而是模擬實際問題。如何對nd數組的每個頁面執行轉置?

k=1:27 % create a array of 27 data 
r=reshape(k,[3,3,3]) % convert the array into 3 x 3 x 3 matrix, 

第一頁和矩陣的第二個結果是,數據是沿着列安置,但我想將它們放在一起行的transpose功能不能與ND陣列工作,我試着使用permute但我沒有得到所需的結果,一個解決方案將執行transpose到每個頁面,但這將打破3D矩陣進入許多二維矩陣。

r(:,:,1) = 

1  4  7 
2  5  8 
3  6  9 

r(:,:,2) = 

10 13 16 
11 14 17 
12 15 18 

預期的結果應該是,

r(:,:,1) = 

1  2  3 
4  5  6 
7  8  9 

Link to the actual problem is,

感謝

回答

2

這是你想要的嗎?

result = permute(r, [2 1 3]); 

這樣會對前兩個維度進行置換。對於你的例子r,

>> k = 1:27; 
>> r = reshape(k, [3,3,3]); 
>> result = permute(r, [2 1 3]); 
>> result 
result(:,:,1) = 
    1  2  3 
    4  5  6 
    7  8  9 
result(:,:,2) = 
    10 11 12 
    13 14 15 
    16 17 18 
result(:,:,3) = 
    19 20 21 
    22 23 24 
    25 26 27 
+0

我已經試過了,但你可以看到它不起作用,在第一頁第一行應該是1,2,3不是1,4,7。 – Manoj

+1

@Manoj對不起,編輯。請看現在 –

+1

感謝它的工作,我想我被matlab給出的中間結果所愚弄,當檢查結果時,答案是正確的,非常感謝,這節省了很多時間, – Manoj

相關問題