2017-04-17 83 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