繁体   English   中英

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

[英]How do I swap both columns and rows in a symmetrical sparse matrix in C++'s Eigen?

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

    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的用法,但没有说明如何构造置换矩阵: 在Eigen中置换稀疏矩阵

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

任何对此的一般帮助也将不胜感激!

感谢您的时间!

您正在寻找applyTranspositionOnTheRight

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM