2017-03-17 55 views
0

我試圖重塑陣列重新安排陣列,執行操作,然後重新塑造它回到原來的。見例如輸出我想要得到的。我可以得到ab,但我遇到了麻煩c看起來像a一次。整形和使用八度/ MATLAB

步驟1)(原始數組)

1      1      1 
    2      2      2 
    3      3      3 
    4      4      4 
    5      5      5 

步驟2)(重塑並執行一些操作)

1,1,1,2,2,2,3,3,3,4,4,4,5,5,5 

步驟3)(陣列被整形回原來的大小,以看像step 1這就是我想要的

1      1      1 
    2      2      2 
    3      3      3 
    4      4      4 
    5      5      5 

我可以得到變量ab,但我不知道如何從b重塑c看起來像a再次見下面的例子

a=[repmat(1,[1,3]);repmat(2,[1,3]);repmat(3,[1,3]);repmat(4,[1,3]);repmat(5,[1,3])] 
[rw,col]=size(a) 
b=reshape(a',1,rw*col) 
c=reshape(b,rw,col) 

a= 
     1      1      1 
     2      2      2 
     3      3      3 
     4      4      4 
     5      5      5 

b=1,1,1,2,2,2,3,3,3,4,4,4,5,5,5 


c = 

        1      2      4 
        1      3      4 
        1      3      5 
        2      3      5 
        2      4      5 

詩代碼和輸出:我使用倍頻4.0這就好比Matlab的。

回答

1

MATLAB和倍頻使用列主要排序,所以你就需要考慮到這一點,重塑的結果。這些數據將首先被填充下列但你希望它來填充第一的列。要做到這一點,你可以指定列數爲提供給reshape行數,然後調換結果

c = reshape(b, 3, []).' 

或者更靈活

c = reshape(b, flip(size(a))).'