3
我有一個稀疏矩陣S. 我執行以下操作 D1 = diag(sum(S,2))
,基本上形成一個對角矩陣。 現在我需要執行(D1)^(-0.5)
,但我得到一個錯誤 「使用錯誤MPOWER,使用全(x)^滿(Y)」關於稀疏矩陣的Matlab問題
轉換到完全將打敗使用稀疏矩陣的目的。
任何建議將是非常有益的。
我有一個稀疏矩陣S. 我執行以下操作 D1 = diag(sum(S,2))
,基本上形成一個對角矩陣。 現在我需要執行(D1)^(-0.5)
,但我得到一個錯誤 「使用錯誤MPOWER,使用全(x)^滿(Y)」關於稀疏矩陣的Matlab問題
轉換到完全將打敗使用稀疏矩陣的目的。
任何建議將是非常有益的。
提高對角矩陣,電源可以簡單地做對的elementwise對角線元素的操作來完成......所以:
D1_diagonal_elements = sum(S,2);
your_result = diag(D1_diagonal_elements .^ (-0.5));
謝謝,我試過了,但得到「使用錯誤電源,內存「 – 2011-03-06 10:39:25
它對正面權力起作用,對於負面權力我得到那個錯誤。 – 2011-03-06 10:40:11
那麼...那是一個相當大的矩陣,那麼甚至沒有完整的對角線適合內存:)原因可能是,因爲x。^( - 0.5)== 1/sqrt(x),所有的零元素將稀疏對角線轉換爲Inf,實際上將矢量轉換爲完整的矢量。順便說一句:你想用什麼結果?你能先收集非零元素,然後擺脫剩餘的Inf? – Latanius 2011-03-06 10:50:26