問題タブ [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 投票する
1 に答える
4418 参照

matrix - Eigen Package 行主スパース行列を繰り返す

以下に示すように、行主疎行列のゼロ以外の要素を反復しようとしていました。

しかし、正しい値が表示されません。代わりに、以下に示すように、it.row() のランダム値、it.col() の値 1、および it.value() のランダム値が表示されます。

RowMajor を ColumnMajor に変更すると、コードが期待どおりに機能します。

行の主要部分で何が問題になったのかわかりませんか? ここで何が欠けているのか教えてください。

前もって感謝します

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

templates - Eigen3: テンプレート関数の 1 つのデータ型で固定サイズの行列と動的サイズの行列を渡す

前の質問に引き続き、さらに質問があります。ここで、2 種類の Eigen パラメータを 1 つの型で渡したいと考えています。(1) 固定サイズの行列、または (2) 行は固定されていますが列は動的です。両方の行列の行は常に 3 である必要があります。修正された関数は次のとおりです。

関数で渡されたパラメーターと同じサイズの変数を作成したいv。固定サイズの行列を渡すことは問題ありませんが、動的 (列) サイズの行列では問題ありません。retダイナミクス サイズ マトリックスの列数は 0 です。

出力:

変数を作成する一貫した方法はありますか? または、それらを 1 つのデータ型で渡すことはできませんか?

前もって感謝します!

0 投票する
3 に答える
2231 参照

eigen - Eigen::Array のドットを呼び出す方法

私は行列を作成する必要があり、それらを 1 次元リストとして扱い、内積を実行したいと考えています。私は次のようにしていますが、機能していません:

それを行う最良の方法は何ですか?

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

c++ - 固有コードはリリース モードでは失敗するが、デバッグ モードでは機能する

Eigen を使用している皆さん、こんにちは。ここで奇妙な質問に遭遇しました。

Eigenを使用して Unscented Kalman Filter を実装しました。

私の PC では非常にうまく動作しますが、同じコードが私の組み込みシステムOdroid XU (Armv7 アーキテクチャ) でセグメンテーション エラーを生成します。

何時間ものデバッグの後、問題は次の部分にあることがわかりました。

ここで、最初に行列OS (次元 n x 3n) の QR 分解を計算し、次にその R コンポーネント (次元 n x n) のランク更新を実行します。internal::llt_inplace::rankUpdateは、文書化されていない Eigen ライブラリの関数です。最初の引数に対してランク 1 の更新を実行するだけです。この関数は ~/path_to_Eigen/Cholesky/LLT.h にあります。

このコードの最も奇妙な点は、-DCMAKE_BUILD_TYPE=Debugを使用すると完全に動作しますが、 -DCMAKE_BUILD_TYPE=Releaseを使用してコンパイルすると、このコードは失敗します。

誰かがこれを理解できるか、以前に同様の問題を抱えているかどうかを尋ねたいと思います。助けてください、どうもありがとう。

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

c++ - Cmake のサブディレクトリからファイルをインクルードする際の問題

私はcmakeに非常に慣れていないため、疑問を既存の質問にリンクすることが適切かどうかを本当に理解できませんでした。場合によっては、適切な質問に自由にマージしてください。

システムに Eigen Library をインストールしました。インクルード ファイルは /usr/local/include/eigen3 にあります。上記のディレクトリの構造は次のとおりです。

Eigen を使用して作成したプロジェクトの CMakeLists.txt を作成する際に、こちらの回答に従って次の手順に従いました。

  1. PROJECT_SOURCE_DIR に「cmake」という名前のフォルダーを作成し、そこに FindEigen3.cmake ファイルをコピーしました (ファイルは /usr/local/eigen3/cmake フォルダーに存在していました)。
  2. フォーラムで報告されているように、私の CMakeLists.txt に適切な変更を加えました。

問題は、ソース ファイルの 1 つに次のような行があることです。

CMake によって生成された makefile を実行しようとすると、Eigen/Dense が見つからないというエラーが表示されます。Eigen/Dense は FindEigen3.cmake で見つかった EIGEN3_INCLUDE_DIR にあるため、これを理解できません。この問題を回避するには、CMakeLists.txt の次の行を変更する必要があります。

それから私は単に書くことができ#include"Dense"、それは機能します。この動作の理由は何ですか?また、そのような行を変更する必要があるソース ファイルが非常に多いため、これを回避する方法はありますか? さらに、この動作の明確化は、将来のライブラリにも役立ちます。

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

matrix - Eigen::Affine3f から Eigen::Matrix4f への変換方法

2 つの質問があります。

  1. Eigen::Affine3f と Eigen::Matrix4f で表される剛体変換は同じですか?

  2. Eigen::Affine3f から Eigen::Matrix4f に、またはその逆に変換するにはどうすればよいでしょうか?

ご協力いただきありがとうございます!

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

c++ - C++ プログラムの構文エラー、特定できません

C++ で固有ライブラリを使用してプログラムを実行しようとしていますが、構文の一部に誤りがあります。これが私のコードです。誰かが私が間違っていた場所にコメントできますか?

また、コメント行で与えられた行列 A を宣言するのは何が間違っていますか?