2017-03-17 87 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))).'