길이가 (n + n * n) 인 std::vector<double> param
이 있고 MatrixXd에 마지막 (n * n) 요소를 이동해야합니다. 나는 이렇게했다 :C++ : std :: vector를 Eigen :: MatrixXd로 변환하는 방법?
MatrixXd cov(n, n);
for(int i = 0 ; i < n ; ++i) {
for(int c = 0 ; c < n ; ++c) {
cov(i, c) = param(n + i * n + c);
}
}
더 좋은 방법이 있습니까?
편집 : 더 나은 수단 빠르게) 당신이 벡터는 간단하고 빠른 방법은 다음과 같다, 인접 요소를 저장하는 것을 보장 경우
std :: vectors는 항상 요소를 메모리에 연속적으로 저장합니다. – Jonas
고마워요! 그것은 작동하지만 실제로 있어야합니다 : 'double * v = & param (n); Eigen :: Map 행렬 (v, n, n);' –
Poia