Eigen 如何在没有循环的情况下比较矩阵的两行或多行

问题描述 投票:0回答:1

我想比较矩阵的两个或多个特征行,以便知道它们是否相等。当然,使用循环这很容易,但我想要一个性能更高的解决方案,无需循环。

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]]
===========================================

这可能吗?谢谢你

c++ eigen
1个回答
0
投票

这个替代方案怎么样?

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.