2017-12-10 3 views
1

다른 말로하면 나는 Comparing two matrices with eigen 을 공부했지만 제 질문은 같지 않다고 말해야합니다. 가정 나는 두 개의 고유 행렬 A와 B가 있고, 나는 방법 다음에을 편집하려면 :2 행렬을 비교하는 방법은 무엇입니까?

경우 (A (I, J)> B (I, J)) A (I, J) = A (I, J) 달리 A (I, J) = B (I, J)는 I는 루프에 대한 명시하지 않고 그렇게 할 수있다 추측

. 그러나 나는 아직 Eigen에 익숙하지 않습니다. 최선의 접근 방법은 무엇일까요?

+0

입니다 B> A). – ypnos

+0

'a = (a> b)입니까? a : b'는 전혀 작동합니까? –

+0

@AlanStokes 당신/Eigen이 삼항 연산자에 과부하를 걸 수 없기 때문에 나는 그렇게 될 것이라고 생각하지 않습니다. – ypnos

답변

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 = A * (A> B) + B *의 길 (함께가는 표현하는 아이겐하지만 일반적인 방법으로 아닙니다

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