簡體   English   中英

使用八度/ Matlab重塑和重新排列數組

[英]reshaping and re-arranging array using octave / matlab

我正在嘗試重塑數組,執行操作,然后將其重塑為原始形狀。 請參閱我嘗試獲取的輸出示例。 我可以得到ab但是我很難讓c看起來像a

步驟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

附:我正在使用像Matlab一樣的Octave 4.0。

MATLAB和Octave使用列優先順序,因此您需要牢記重塑結果。 數據將首先沿着列填充但您希望它首先填充 為此,您可以將列數指定為要reshape的行數,然后轉置結果

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

或更靈活

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM