【发布时间】:2018-02-22 15:18:31
【问题描述】:
在使用 Eigen 的 rowwise 操作时,我无法完全弄清楚它的语法...
我有一个特征矩阵,我想将每一行除以最后一行。所以如果我们从一个矩阵开始
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 运算符做的事情有一个简洁的形式吗?
【问题讨论】: