2014-02-18 144 views
1

我有一個長度爲3的向量。我想將其表示爲維度爲4 * 2的矩陣。即)如果矢量的長度是n,那麼矩陣應該是維數(n + 1)* 2。基質應當具有佈置的元件如下:如何將矢量表示爲矩陣?

Vector= [2 3 4] 

Matrix = [0 2;2 3;3 4;4 0] 

回答

2

從Matlab的命令reshape是我的問題的答案的基礎:

B =重塑(A,M,N)返回米逐元素矩陣B,其元素從A列逐列出來。如果A沒有m * n個元素(from the official Matlab help),則會產生錯誤。

您基本上在開頭和結尾添加零,然後讓矢量中的每個數字出現兩次(如果您「展開」/重塑矩陣)。所以,讓我們通過扭轉這一說明,建造所需的矩陣:

%set input vector 
v = [2 3 4]; 
%"double" the numbers, v_ is my temporary storage variable 
v_ = [v; v]; 
%align all numbers along one dimension 
v_ = reshape(v_, 2*length(v), 1) 
%add zeros at beginning and end 
v_ = [0 v_ 0]; 
%procude final matrix 
m = reshape(v_, length(v)+1, 2); 

總之

%set input vector 
v = [2 3 4]; 
%"double" the numbers, v_ is my temporary storage variable 
%all values are aligned as row vector 
%zeros are added at beginning and end 
v_ = [0, v, v, 0]; 
%produce final matrix 
m = reshape(v_, length(v)+1, 2); 

我沒有檢查它,因爲我沒有手頭有Matlab的權利,但你應該明白了。

編輯

答案由13aumi管理這個任務,即使沒有reshape命令。但是,您需要密切關注v(row-vs-column-vector)的形狀。

+0

感謝.....它的工作...我嘗試給名稱到每行和每列......任何提示.. – user3168654

+0

您可以使用結構體或單元格來存儲相關的字符串,參見參考資料。 http://www.mathworks.com/help/matlab/ref/strings.html BTW:您可能想要提出一個新問題,即使它可能與您之前詢問的另一個問題有關。這就是StackOverflow的工作方式。(當然你可以添加一個超鏈接到相關的問題) – fuesika

+0

pyStarter:謝謝 – user3168654

4

您可以通過簡單的操作,輕鬆解決你的問題:

vector = [2 3 4]; 
matrix = [0 vector; vector 0]'; 

'被用來轉置矩陣。

此外,還有在Matlab兩個有用的函數處理向量和矩陣:

重塑()

repmat()

+2

+1但是我建議你改變'[0 vector; vector 0]''到'[0 vector(:)。';向量(:)。' 0]。';'這樣它也可以工作,如果'vector'是一列,並且即使它很複雜(使用轉置而不是共軛轉置) –

+0

@LuisMendo謝謝 – user3168654