問題タブ [eigen3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
617 参照

c++ - Eigen3 行列を初期化するより良い方法を探しています

二重要素を持つものから複雑な要素を持つ Eigen3 行列を導出する状況があります。現時点では、行と列をループして、エントリを 1 つずつ入力します。誰かが次のようなアプローチを知っているかどうか疑問に思っていました:

0 投票する
1 に答える
1183 参照

c++ - Eigen::Matrix がデータを解放するための回避策

別のライブラリからのデータに Eigen3 を使用したいと考えています。ggael による以前の回答は、キーワードEigen::Matrixを使用して既存のデータを採用する方法を示しています。newただし、結果はまだデータの所有権を取得しているように見えるため、これは私にとって十分ではありません。Matrixつまり、範囲外になるとデータが解放されます。dataつまり、元のライブラリによって最終的に削除された場合、これはクラッシャーです。

私は2つの回避策を考え出しました:

が存在するため、これはかなり不便ですcache。もう 1 つはこの問題から解放されています。

ただし、ここでは、元のデータで何が起こるかは不明ですm(もしあれば、Eigen3 のドキュメントからは完全には明らかではありません)。

私の質問は、そのデータの所有権を解放する標準的な方法があるかどうかですEigen::Matrix(自己割り当てまたは採用)。

0 投票する
1 に答える
3742 参照

c++ - インテル® MKL での Eigen C++ ライブラリーの使用

Eigen(3) の Intel MKL を使用してみました。以下に示す基本的な行列乗算プログラムを作成しました。



「g++ EigenTest_IntelMKL.cpp -I../Eigen -DMKL_ILP64 -m64 -I /opt/intel/mkl/include」を使用すると、次のコンパイル エラーが発生しました。

EigenTest_IntelMKL.cpp:3:0 からインクルードされたファイル: ../Eigen/src/Core/util/MKL_support.h:64:9: エラー: 'complex' in namespace 'std' does not name a type typedef std::複雑なdcomplex; ^ ../Eigen/src/Core/util/MKL_support.h:65:9: エラー: 名前空間 'std' の 'complex' は型 typedef std::complex scomplex を指定しません。


0 投票する
0 に答える
220 参照

c++ - Eigen を使用した 1 次元配列と行列の乗算

なぜこれがEigenで機能しないのか疑問に思っていました:

これが機能している間:

これも機能します:

私のコンパイラは、最初の例 (clang-500.2.79) に対して次のエラー メッセージを表示します。

code/Eigen/src/Core/ArrayWrapper.h:178:56: エラー:タイプ 'ScalarWithConstIfNotLvalue *' (別名 'double *') の戻りオブジェクトをタイプ 'const Scalar *' (別名 'const double *')インライン ScalarWithConstIfNotLvalue* data() { return m_expression.data(); }

0 投票する
1 に答える
1951 参照

c++ - なぜ "const Eigen::Matrix<>&" と "const Ref>「明らかに相性悪い?

これが私のコード例です:

( で囲まれた部分に注意してください#if ENABLE_MY_COMPILE_ERROR)

これは、次の場合に発生するコンパイルエラーですENABLE_MY_COMPILE_ERROR != 0

したがって、明らかに以下のものは互換性がありません。

  • const Eigen::Ref<Eigen::MatrixXd> a

  • const Eigen::Matrix3d& MRef = M

私の質問は次のとおりです。

  • これは設計によるものですか、それとも Eigen::Ref<> のバグ/欠点ですか?

  • 設計による場合、const の正確さを維持しながら Matrix オブジェクトをきれいに渡す良い方法は何ですか?

たとえば、メンバー関数を持つクラスがある場合:

コードのブロックでこの関数の戻り値を数回使用する予定です。短い名前で参照を作成し、それを定数参照にしたいと考えています。

const Ref<Matrix3d>しかし、次のような引数を受け入れる関数に M を渡すと、上記のコンパイル エラーが発生します。

参考までに、現在、次のバージョンの Eigen を使用しています。

0 投票する
1 に答える
705 参照

c++ - Eigen3 Transform の回転を AngleAxis に変換します

Eigen 3を使用してこれを行うにはどうすればよいですか?

0 投票する
1 に答える
8717 参照

c++ - Eigen::Ref<> クラスの正しい使い方

Eigen は Ref<> クラスを導入して、テンプレート関数を記述したくない場合に、不必要な一時変数を使用せずに Eigen オブジェクトをパラメータとして関数を記述できるようにしました。これについてはこちらで読むことができます。

さらにインターネットを検索すると、Ref<> クラスを使用したいくつかの異なるパラメーター宣言が見つかりました。Eigen のドキュメントconst Eigen::Ref<const Eigen::MatrixXf>&では、最初の例で読み取り専用パラメーターを使用しています。2 番目の例Eigen::Ref<Eigen::MatrixXd>では、読み取りと書き込みのパラメーターについて紹介されていますが、ここでconst Eigen::Ref<const Eigen::MatrixXd>は読み取り専用パラメーター (参照なし) に使用されます。だから私の質問は:

次の宣言の違いは何ですか?どのような場合に使用しますか?`

  1. const Eigen::Ref<const Eigen::MatrixXd>&
  2. const Eigen::Ref<const Eigen::MatrixXd>
  3. const Eigen::Ref<Eigen::MatrixXd>&
  4. const Eigen::Ref<Eigen::MatrixXd>
  5. Eigen::Ref<const Eigen::MatrixXd>&
  6. Eigen::Ref<const Eigen::MatrixXd>
  7. Eigen::Ref<Eigen::MatrixXd>&
  8. Eigen::Ref<Eigen::MatrixXd>

完全を期すために、const の使用と参照の可能な組み合わせをすべてリストしました。