2017-04-17 81 views
0

我試圖實現以下稠密矩陣運算爲稀疏對稱矩陣:如何交換C++特徵中對稱稀疏矩陣中的列和行?

dm.col(j).swap(dm.col(i)); 
    dm.row(j).swap(dm.row(i)); 

爲了交換兩列(和行)在稀疏對稱矩陣,我試圖生成的置換矩陣,使得我可以把它傳遞給.twistedBy():

Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic> P; 
    P.setIdentity(); 
    P.col(j).swap(P.col(i)); 

    sm = sm.twistedBy(P); 

不幸的是,.COL()掉期()不支持置換矩陣。我該怎麼辦?

這個問題澄清了使用.twistedBy的,但並沒有解釋如何構建一個置換矩陣: Permuting sparse matrices in Eigen

我有一個很難試圖理解的本徵的文檔: https://eigen.tuxfamily.org/dox/classEigen_1_1PermutationMatrix.html

任何一般的幫助,也將不勝感激!

謝謝你的時間!

回答

2

您正在尋找applyTranspositionOnTheRight

Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic >::PermutationMatrix P(n); 
P.setIdentity(); 
P.applyTranspositionOnTheRight(j, i); 
+0

非常感謝您! – Tdiddy