[英]reshaping and re-arranging array using octave / matlab
我正在嘗試重塑數組,執行操作,然后將其重塑為原始形狀。 請參閱我嘗試獲取的輸出示例。 我可以得到a
和b
但是我很難讓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
我可以獲取變量a
和b
但是我不確定如何從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.