2011-03-06 192 views
3

我有一個稀疏矩陣S. 我執行以下操作 D1 = diag(sum(S,2)),基本上形成一個對角矩陣。 現在我需要執行(D1)^(-0.5),但我得到一個錯誤 「使用錯誤MPOWER,使用全(x)^滿(Y)」關於稀疏矩陣的Matlab問題

轉換到完全將打敗使用稀疏矩陣的目的。

任何建議將是非常有益的。

回答

3

提高對角矩陣,電源可以簡單地做對的elementwise對角線元素的操作來完成......所以:

D1_diagonal_elements = sum(S,2); 
your_result = diag(D1_diagonal_elements .^ (-0.5)); 
+0

謝謝,我試過了,但得到「使用錯誤電源,內存「 – 2011-03-06 10:39:25

+0

它對正面權力起作用,對於負面權力我得到那個錯誤。 – 2011-03-06 10:40:11

+0

那麼...那是一個相當大的矩陣,那麼甚至沒有完整的對角線適合內存:)原因可能是,因爲x。^( - 0.5)== 1/sqrt(x),所有的零元素將稀疏對角線轉換爲Inf,實際上將矢量轉換爲完整的矢量。順便說一句:你想用什麼結果?你能先收集非零元素,然後擺脫剩餘的Inf? – Latanius 2011-03-06 10:50:26