如何获得在Eigen3中交换矩阵的两行的置换矩阵?

时间:2018-10-24 08:52:31

标签: eigen eigen3

我想定义一个置换矩阵,如下所示:

PermutationMatrix<Dynamic, Dynamic> perm(n)
perm.setIdentity();
"swap(perm_row(i), perm_row(j))",

其中perm_row(i)perm_row(j)分别表示i的第j行和第perm行。如何在Eigen3中执行语句"swap(perm_row(i), perm_row(j))"

1 个答案:

答案 0 :(得分:1)

如果您不需要执行其他排列,则可以执行以下操作:

perm.indices()[i] = j;
perm.indices()[j] = i;

如果需要执行更多交换,则可以交换列,然后对其进行转置:

for(...)
  swap(perm.indices()[i],perm.indices()[j]);
perm_row = perm.inverse();

或使用Eigen::Transpositions