如何在C ++的Eigen中对称稀疏矩阵中交换列和行?

时间:2017-04-17 15:16:41

标签: c++ eigen rcpp

我正在尝试为稀疏对称矩阵实现以下密集矩阵运算:

    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()。swap()。我该怎么办?

这个问题澄清了.twistedBy的用法,但没有解释如何构造置换矩阵: Permuting sparse matrices in Eigen

我很难尝试理解本征的文档: https://eigen.tuxfamily.org/dox/classEigen_1_1PermutationMatrix.html

任何一般性的帮助也会受到赞赏!

感谢您的时间!

1 个答案:

答案 0 :(得分:2)

您正在寻找applyTranspositionOnTheRight

setTimeout(function () {
  alert("Hello world!");
}, 1);