我想定义一个置换矩阵,如下所示:
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))"
?
答案 0 :(得分:1)
如果您不需要执行其他排列,则可以执行以下操作:
perm.indices()[i] = j;
perm.indices()[j] = i;
如果需要执行更多交换,则可以交换列,然后对其进行转置:
for(...)
swap(perm.indices()[i],perm.indices()[j]);
perm_row = perm.inverse();