3

私はほとんどのコードにEigenを使用していますが、GSLのMiserまたはVegasモンテカルロ積分を使用したいと思います。Eigenのベクトルをdoublesのc配列に変換する必要があります。それを行うための最良の方法は何でしょうか。

Matrix<double,3,1> --> c_array []
4

1 に答える 1

5

私は以前アイゲンと仕事をしたことがあります...

通常、このスレッドでユーザー 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);

それが役に立ったことを願っています。

于 2012-10-11T22:44:39.837 に答える