2016-11-08 166 views
0

我有一個向量,其具有的尺寸(1,9)與所述值如下:如何將矢量轉換爲矩陣? (Matlab的)

V= [0.5 0.1 0.1 0.9 0.5 0.1 0.9 0.9 0.5] 

我怎樣才能轉換矢量V到基質M用的尺寸(3,3)其中第一行是矢量的前3個元素和第二行包含矢量的下一個3個元素,並保持該規則的所有向量的其它元件的如下:

 0.5 0.1 0.1 
M=  0.9 0.5 0.1 
     0.9 0.9 0.5 

也用於不同尺寸的向量,例如(1,100),我怎麼能轉換成(10,10)基於規則abo的矩陣已經?

回答

4

使用reshape,然後轉置結果:

M = reshape(V, 3, 3).'; 

reshape變換的向量成所需大小的矩陣。該矩陣在列專業訂單中創建。因此,僅使用reshape就會將這些元素放置在列中。既然你希望元素被行填充,一個技巧就是簡單地轉置結果。

一般情況下,你想一個N元素矢量V重塑成大小sqrt(N) x sqrt(N)的行主順序方陣M。您可以爲一般的情況下做到這一點:

N = sqrt(numel(V)); 
M = reshape(V, N, N).'; 

當然,這是假設元素的V總數是一個完美的正方形。