在使用Eigen的rowwise
操作时,我无法完全弄清楚其语法...
我有一个Eigen矩阵,希望将每一行除以最后一行。因此,如果我们从一个矩阵开始:
r = [ 0, 1
2, 3
4, 5 ]
那么在这个转换之后,我希望得到的是:
r = [ 0, .2
.5, .6
1, 1 ]
最好是在原地进行操作,覆盖
r
。此外,我不会使用最后一行的值,所以如果变换后最后一行实际上是1,也没有关系。这里是我尝试过但无法编译的一些语法:
r.rowwise() = (r.array().rowwise() / r.bottomRows(1).array()).eval();
r.rowwise() = (r.rowwise().array() / r.bottomRows(1).array()).eval();
r.rowwise() /= r.bottomRows(1).array();
r = r.rowwise().cwiseQuotient(rrr);
这个传统的for循环版本可行
int last_row = r.rows() - 1;
for (int row = 0; row < last_row; ++row) {
r.row(row).array() /= r.row(last_row).array();
}
然而,无论我去哪里,人们都在提倡使用rowwise
或colwise
操作。但是我无法用这种语法实现它。有没有一个漂亮简洁的形式可以使用rowwise
运算符来实现我想要的功能?
hnormalized()
没有“原地”版本。 - wcochran