問題タブ [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.
c++ - Eigen::Translation から Eigen::Transform を構築する
私は次のコードを持っています:
Eigen::Translation3d
これはコンパイルされず、を に変換できませんEigen::Affine3d
。次の行で同じエラーが発生します。
しかし、これは問題ありません:
そのため、the 演算子は正常に動作しているように見えますが、anを使用し=
て構築するコンストラクターは定義されていません。Eigen::Affine3d
Eigen::Translation3d
ドキュメントには、クラスに関する次の注意事項があります。Translation
このクラスは、平行移動変換を格納するために使用されるのではなく、Transform オブジェクトの構築と更新を容易にすることを目的としています。
Translation
上記の関数を宣言して、Eigen/Geomerty で宣言されているような変換オブジェクトを使用して (一時変数を使用せずに) 直接呼び出す方法はありますか?
c++ - std::vector のアロケータを変更すると、イニシャライザ リストが利用できないのはなぜですか?
私のプロジェクトでは、使用するポイント タイプを から に変更したところEigen::Vector2f
、Eigen::Vector2d
位置合わせの問題が発生しました。
コードの簡略版は次のとおりです。
次の実行時エラーが発生します。
assert-message が示唆しているように、Fixed-size vectorizable Eigen objects の必要な配置について読みました。また、STL Containersに関するサブセクション。そして、私には2つのオプションがあるようです:
- 使用
Eigen::aligned_allocator
- または
EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION
マクロを使用します。
コンパイラは初期化子リストを適切に変換できないため、どちらの試行もコンパイルされません (GCC 4.8.3 および Clang 3.5 でテスト済み)。
変更されたコードは次のとおりです。
GCC エラー出力:
だから私は疑問に思っています:
のアロケータを変更するときにイニシャライザ リストを使用できないのはなぜ
std::vector
ですか?- これはアライメントのせいですか?
- どうにかして初期化子リストを揃えることはできますか?
特殊化バージョンが失敗するのはなぜですか?
- これらには初期化子リスト機能がありませんか?
c++ - rows() メソッドは何をしますか?
rows()
一般的に非常に優れた固有のドキュメントでは、 のメソッドへの参照が表示されMatrixBase
ます。現在、行列の方向 (行/列優先) を知らなくても行列の行数を取得する方法を見つけようとしているので、単純に を呼び出すと非常に便利rows()
です。
しかし、私はこれがどこにも文書化されているのを見つけることができません。この方法は何ですか?それは何をするためのものか?動的行列を返すだけEigen::Dynamic
ですか、それとも行数を知っていますか?
MatrixBase の参照ページを見ると、いくつかの言及がありますMatrixBase::rows()
が、リンクはありません... 何かアイデアはありますか?
c++ - Eigen C++ ライブラリで GDB を使用する
http://eigen.tuxfamily.org/からダウンロードできる Eigen C++ ライブラリを使用しています。これは、行列と配列を簡単に処理するための C++ ライブラリです。デバッグには g++ コンパイラと gdb を使用します。ただし、gdb を使用しているときに、Matrix (Eigen が提供) の内容を印刷できないことがわかりました。
c++ - 'const Eigen::GeneralProduct から変換できません' を '2 倍にする'
この行を計算するたびに、このエラーが発生し続けます
どこでEigen::MatrixXd Z(3,3), b(3,1);
。キャストを試みましたが、運がありません。助言がありますか?
c++ - マトリックスからゼロ行を削除する (エレガントな方法)
いくつかのゼロ行を含むマトリックスがあります。ゼロ行を削除したいと思います。行列は Nx3 です。私がやったことは簡単です。3 つの要素ごとに行を表すものを作成std::vector
し、それを に変換しEigen::MatrixXd
ます。ゼロ行を削除するエレガントな方法はありますか?
c++ - ファイルから固有行列を読み取る方法は?
次のようなファイルに固有行列を書き込むことができることを知っています。
もう一度読むのに最も簡単な方法は何ですか?これはうまくいかないようです:
次のコンパイラ エラーが発生します。
c++ - Eigen Library の大きなマトリックス内にサブマトリックスを作成する
次のマトリックスを構築したいと思います
B & C
常にゼロです。A
単位行列です。D
トリッキーです。それらはインデックスに基づいて指定されます。たとえば、インデックスが の場合0
、D
インデックスが1
_D
Eigen Library でこの手順を実行するにはどうすればよいですか? Eigen で行列を作成する方法は知っていますが、それらを 1 つの行列として構築する方法がわかりません。