2014-05-24 1 views
0

나는 가로 질러 온 지루한 일 (m(0,0) = 1; ... 등)의 대체 방법으로 아이겐 도서관 here매트릭스의 원소를 할당하는 고유 라이브러리?

Matrix3f m; 
m << 1, 2, 3, 
    4, 5, 6, 
    7, 8, 9; 

의 행렬 할당 다음과 같습니다. 첫 번째 방법을 사용할 때주의해야 할 사항은 무엇입니까? 단순화가 비용으로 발생한다는 것을 알고 있기 때문입니다.

답변

2

첫 번째 경우 m(0,0)=1operator(Index, Index)operator=(const Scalar& s)을 호출합니다. 이는 아마도 매우 빠릅니다. m << 1,2, ...가 오버로드 operator<< 쉼표 operator,(const Scalar& s) 오버로드의 체인을 호출하는 반면, 여기에 코드를 참조하십시오 http://eigen.tuxfamily.org/dox/CommaInitializer_8h_source.html

것 같아요 것이 두 번째 초기화는 조금 느리지 만 당신이 손으로 거대한 행렬을 초기화하지 않는 한, 그것은해서는 안 차이. 어떤 경우 든 쉼표 초기화는 루프에서 초기화 할 수 없기 때문에 콤마 형식은 작은 행렬 (실제로 요소를 직접 작성할 수있는 곳)에서만 사용됩니다.

관련 문제