我想比较矩阵的两个或多个特征行,以便知道它们是否相等。当然,使用循环这很容易,但我想要一个性能更高的解决方案,无需循环。
MatrixXi M(12,3) is:
===========================================
M (Rows: 12 Cols: 3)
===========================================
[[1, 1, 1]
[1, 1, 1]
[1, 1, 1]
[1, 1, 1]
[1, 1, 1]
[1, 1, 1]
[1, 1, 1]
[1, 1, 1]
[1, 1, 1]
[1, 1, 1]
[1, 1, 1]
[1, 1, 1]]
===========================================
这可能吗?谢谢你
这个替代方案怎么样?
bool rowsEquals(
const Eigen::MatrixXi& m,
Eigen::Index row1,
Eigen::Index row2) {
return m.row(row1).cwiseEqual(m.row(row2)).all();
}
int main() {
Eigen::MatrixXi m(3, 3);
m << 2, 2, 2,
2, 2, 2,
2, 3, 2;
std::cout << rowsEquals(m, 0, 1) << std::endl;
std::cout << rowsEquals(m, 1, 2) << std::endl;
}