2012-11-12 63 views
0

給定一個矩陣,其具有在其對角線上和其下三角部分零:改變表示:上三角矩陣和緊湊的矢量(八度/ Matlab的)

A = triu(rand(5,5), 1) % example 

A = 
0.00000 0.47474 0.55853 0.30159 0.97474 
0.00000 0.00000 0.03315 0.74577 0.20878 
0.00000 0.00000 0.00000 0.54966 0.76818 
0.00000 0.00000 0.00000 0.00000 0.82598 
0.00000 0.00000 0.00000 0.00000 0.00000 

我想轉換在一個緊湊載體v是跳過所有零個元素:

v = [0.47474 0.55853 0.30159 0.97474 0.03315 
    0.74577 0.20878 0.54966 0.76818 0.82598] 

後來我想從矢量回矩陣轉換。

問:什麼是這兩個之間轉換一種優雅的方式?

回答

6

我將開始與那些

B = triu(ones(5,5), 1) 

並且然後v可以被定義爲的上三角矩陣:

v = A(B==1) 

v轉換回

A = B 
A(B==1) = v 
+1

整潔!和另外幾個字符 –

1

因爲在列主順序我無法在一個聲明中做到這一點Matlab的商店陣列,還沒有很好,但這裏有兩個聲明的解決方案:

B = A'; 

v = B(B~=0)' 

@ dustincarr的回答使得通過進一步工作我多餘。