2013-04-13 3 views
3

I는 대각선을 따라 고유 값을 이용하여 대각선 매트릭스를 생성하고 설정하는 것을 시도하고있다 : diagonal_matrix() 연산자 없기 때문에고유를 사용하여 대각선 행렬의 값을 어떻게 설정합니까?

 Eigen::DiagonalMatrix<int, Eigen::Dynamic> diagonal_matrix(5); 
     for (int i = 0; i < 5; ++i) { 
      diagonal_matrix(i, i) = i * i + 2; 
     } 

그러나,이 작동하지 않는다. 고유를 사용하여 대각선 행렬의 대각선 값을 설정하는 올바른 방법은 무엇입니까?

답변

7

이 연산자는 i! = j를 사용하여 (i, j)를 호출 할 수 없으므로 사용할 수 없습니다. 따라서이 함수는 의미가 없습니다. .diagonal() 멤버는 1 차원 벡터로 대각선의 표현을 반환, 여기

diag_mat.diagonal()[i] = ...; 

: 당신은 대각선을 복용 구성되어 더 자세한 방법을 사용합니다. 선형 간격 값의 무작위와 같은 상위 루틴으로도 설정할 수 있습니다. 예를 재현하는 방법 :

diag_mat.diagonal() = ArrayXi::LinSpaced(5,0,4).square() + 2; 
관련 문제