C++ 如何在C+;中交换对称稀疏矩阵中的列和行+';艾根是谁?

C++ 如何在C+;中交换对称稀疏矩阵中的列和行+';艾根是谁?,c++,eigen,rcpp,C++,Eigen,Rcpp,我正在尝试为稀疏对称矩阵实现以下密集矩阵运算: dm.col(j).swap(dm.col(i)); dm.row(j).swap(dm.row(i)); 为了在稀疏对称矩阵中交换两列(和两行),我尝试生成一个置换矩阵,以便将其传递给.twistedBy(): 本征::置换矩阵P; P.setIdentity(); P.col(j)、swap(P.col(i)); sm=sm.twistedBy(P); 不幸的是,置换矩阵不支持.col().swap()。我该怎么办 此问题澄

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

    dm.col(j).swap(dm.col(i));
    dm.row(j).swap(dm.row(i));
为了在稀疏对称矩阵中交换两列(和两行),我尝试生成一个置换矩阵,以便将其传递给.twistedBy():

本征::置换矩阵P;
P.setIdentity();
P.col(j)、swap(P.col(i));
sm=sm.twistedBy(P);
不幸的是,置换矩阵不支持.col().swap()。我该怎么办

此问题澄清了.twistedBy的用法,但未解释如何构造置换矩阵:

我很难理解eigen的文档:

任何与此相关的一般帮助都将不胜感激

谢谢你抽出时间

您正在寻找:

本征::置换矩阵::置换矩阵P(n);
P.setIdentity();
P.applyTranspositionOnTheRight(j,i);
您正在寻找:

本征::置换矩阵::置换矩阵P(n);
P.setIdentity();
P.applyTranspositionOnTheRight(j,i);
    Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic> P;
    P.setIdentity();
    P.col(j).swap(P.col(i));

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