我有一個長度爲3的向量。我想將其表示爲維度爲4 * 2的矩陣。即)如果矢量的長度是n,那麼矩陣應該是維數(n + 1)* 2。基質應當具有佈置的元件如下:如何將矢量表示爲矩陣?
Vector= [2 3 4]
Matrix = [0 2;2 3;3 4;4 0]
我有一個長度爲3的向量。我想將其表示爲維度爲4 * 2的矩陣。即)如果矢量的長度是n,那麼矩陣應該是維數(n + 1)* 2。基質應當具有佈置的元件如下:如何將矢量表示爲矩陣?
Vector= [2 3 4]
Matrix = [0 2;2 3;3 4;4 0]
從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)的形狀。
您可以通過簡單的操作,輕鬆解決你的問題:
vector = [2 3 4];
matrix = [0 vector; vector 0]';
'被用來轉置矩陣。
此外,還有在Matlab兩個有用的函數處理向量和矩陣:
重塑()
repmat()
+1但是我建議你改變'[0 vector; vector 0]''到'[0 vector(:)。';向量(:)。' 0]。';'這樣它也可以工作,如果'vector'是一列,並且即使它很複雜(使用轉置而不是共軛轉置) –
@LuisMendo謝謝 – user3168654
感謝.....它的工作...我嘗試給名稱到每行和每列......任何提示.. – user3168654
您可以使用結構體或單元格來存儲相關的字符串,參見參考資料。 http://www.mathworks.com/help/matlab/ref/strings.html BTW:您可能想要提出一個新問題,即使它可能與您之前詢問的另一個問題有關。這就是StackOverflow的工作方式。(當然你可以添加一個超鏈接到相關的問題) – fuesika
pyStarter:謝謝 – user3168654