2012-03-10 107 views
4

以下是我有:如何重塑一個矢量來製作矩陣?

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 

這裏就是我想:

[ 
    1, 2, 3, 4, 
    5, 6, 7, 8, 
    9, 10, 11, 12 
] 

行和列(例如3和4)的數量是已知的。

我會怎麼做呢?

回答

2

guide

墊= vec2mat(VEC,matcol)的向量VEC轉換爲具有matcol列的矩陣,一次創建一行。如果vec的長度不是matcol的倍數,那麼在mat的最後一行放置額外的零。矩陣墊具有細胞(長度(vec)/ matcol)行。

+0

謝謝,chx,這個工程! – izhak 2012-03-10 19:59:49

+1

注意!這需要「通信系統工具箱」。 「正確的」答案是「重塑」。 'reshape(vec,[],matcol)'會將這個向量重塑成一個帶有matcol列的矩陣。重塑時,MATLAB的行數由MATLAB自動計算。 – 2016-09-20 12:30:18

+0

重塑解決方案也具有更好的性能(至少對於我測試的矩形矩陣)。 – rnoodle 2017-02-12 00:23:39

5

reshape

b = reshape(a, 4, 3)'將將努力爲您的例子。從原始中取元素,並按列方式插入新矩陣。

此外,reshape是一個內置的MATLAB函數。還有其他解決方案,如需要通訊工具箱的vec2mat

+0

確定嗎? 「給定一個向量輸入,重塑一次創建一列矩陣,而不是一次一行。」 – chx 2012-03-10 19:41:58

+0

@chx這就是爲什麼我做了4行,3列並轉置了結果。我也喜歡你的回答,我認爲他們都有效。 – tmpearce 2012-03-10 19:43:33

+0

哦對不起,我錯過了轉置。 – chx 2012-03-10 23:31:04