2015-09-27 42 views
1

我想調整的形式下一個矩陣假設4x3x5,以20X3的二維矩陣,但同時保留的順序如下圖所示:重塑矩陣到2d保持特定的順序

Original Matrix Reshaped Matrix

功能reshape()不保留這個特定的順序,我怎麼能達到這個最簡單的方式?

回答

3

讓我們一勞永逸地解決連接和切割第三維的這些問題!

第I部分(3D到2D):沿着列和整個3rd暗淡一個3D陣列的串聯,A以形成2D陣列 -

reshape(permute(A,[1 3 2]),[],size(A,2)) 

第二部分(2D到3D) :切每N行之後的2D陣列B以形成3D陣列的3D切片 -

permute(reshape(B,N,size(B,1)/N,[]),[1 3 2]) 

採樣運行 -

第一部分(3D到2D)

>> A 
A(:,:,1) = 
    4  1  4  3 
    8  4  6  4 
    8  5  6  1 
A(:,:,2) = 
    9  4  4  1 
    2  2  9  7 
    1  5  9  3 
A(:,:,3) = 
    4  4  7  7 
    5  9  6  6 
    9  3  5  2 
>> B = reshape(permute(A,[1 3 2]),[],size(A,2)); 
>> B 
B = 
    4  1  4  3 
    8  4  6  4 
    8  5  6  1 
    9  4  4  1 
    2  2  9  7 
    1  5  9  3 
    4  4  7  7 
    5  9  6  6 
    9  3  5  2 

第二部分(2D轉3D)

>> N = 3; 
>> permute(reshape(B,N,size(B,1)/N,[]),[1 3 2]) 
ans(:,:,1) = 
    4  1  4  3 
    8  4  6  4 
    8  5  6  1 
ans(:,:,2) = 
    9  4  4  1 
    2  2  9  7 
    1  5  9  3 
ans(:,:,3) = 
    4  4  7  7 
    5  9  6  6 
    9  3  5  2 
+0

這正是我一直在尋找,非常感謝 – Jecimi