私はほとんどのコードにEigenを使用していますが、GSLのMiserまたはVegasモンテカルロ積分を使用したいと思います。Eigenのベクトルをdouble
sのc配列に変換する必要があります。それを行うための最良の方法は何でしょうか。
Matrix<double,3,1> --> c_array []
私は以前アイゲンと仕事をしたことがあります...
通常、このスレッドでユーザー janneb が言及したように、内部配列データに簡単にアクセスするには、data()を呼び出すだけです。
Vector3d v;
// Operations to add values to the vector.
double *c_ptr = v.data();
個々の値を反復して何らかの操作を実行する場合は、宛先に配置する行列の順序に応じて、すべての行 (.row(index))および列 (.col(index))を反復する必要があります。ベクター。
特定の例では、行を反復するだけで済みます。
Matrix<double,3,1> --> c_array []
.col(0)を呼び出したいと思うでしょう。同様のニーズが発生した場合は、特定のドキュメントが常に役立ちます。
したがって、次のような結果になります (3 行の単一列の行列を使用する場合):
Vector3d v;
// Operations to add values to the vector.
for (int i=0; i<v.rows(); ++i)
c_array[i] = v(i,0);
それが役に立ったことを願っています。