如何比较2个矩阵?

时间:2017-12-10 19:53:08

标签: c++ eigen

在此之前,我必须说我已经研究过Comparing two matrices with eigen ,但我的问题不一样。假设我有两个特征矩阵A和B,我想以下列方式编辑A:

  

if(A(i,j)> B(i,j))A(i,j)= A(i,j)   否则A(i,j)= B(i,j)

我想没有明确的for循环就可以做到这一点。但我对Eigen还不是很精通。什么是最好的方法?

1 个答案:

答案 0 :(得分:3)

它是A.cwiseMax(B)

#include <iostream>
#include <Eigen/Dense>

int main()
{
    Eigen::Matrix2i A = Eigen::Matrix2i::Random();
    Eigen::Matrix2i B = Eigen::Matrix2i::Random();

    std::cout << "A =\n" << A << "\nB =\n" << B << "\n";

    A = A.cwiseMax(B);

    std::cout << "max(A,B) =\n" << A << "\n";
}

我的机器上的输出是

A =
 730547559  607950953
-226810938  640895091
B =
 884005969 -353856438
-649503489  576018668
max(A,B) =
 884005969  607950953
-226810938  640895091