std::vector<double> param
の長さは(n + n * n)であり、最後の(n * n)要素をMatrixXdに移動する必要があります。私はこのようにしました: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