問題タブ [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 に答える
1665 参照

c++ - Eigen::Translation から Eigen::Transform を構築する

私は次のコードを持っています:

Eigen::Translation3dこれはコンパイルされず、を に変換できませんEigen::Affine3d。次の行で同じエラーが発生します。

しかし、これは問題ありません:

そのため、the 演算子は正常に動作しているように見えますが、anを使用し=て構築するコンストラクターは定義されていません。Eigen::Affine3dEigen::Translation3d

ドキュメントには、クラスに関する次の注意事項があります。Translation

このクラスは、平行移動変換を格納するために使用されるのではなく、Transform オブジェクトの構築と更新を容易にすることを目的としています。

Translation上記の関数を宣言して、Eigen/Geomerty で宣言されているような変換オブジェクトを使用して (一時変数を使用せずに) 直接呼び出す方法はありますか?

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

c++ - std::vector のアロケータを変更すると、イニシャライザ リストが利用できないのはなぜですか?

私のプロジェクトでは、使用するポイント タイプを から に変更したところEigen::Vector2fEigen::Vector2d位置合わせの問題が発生しました。

コードの簡略版は次のとおりです。

次の実行時エラーが発生します。

assert-message が示唆しているように、Fixed-size vectorizable Eigen objects の必要な配置について読みました。また、STL Containersに関するサブセクション。そして、私には2つのオプションがあるようです:

  1. 使用Eigen::aligned_allocator
  2. またはEIGEN_DEFINE_STL_VECTOR_SPECIALIZATIONマクロを使用します。

コンパイラは初期化子リストを適切に変換できないため、どちらの試行もコンパイルされません (GCC 4.8.3 および Clang 3.5 でテスト済み)。

変更されたコードは次のとおりです。

GCC エラー出力:

だから私は疑問に思っています:

  • のアロケータを変更するときにイニシャライザ リストを使用できないのはなぜstd::vectorですか?

    • これはアライメントのせいですか?
    • どうにかして初期化子リストを揃えることはできますか?
  • 特殊化バージョンが失敗するのはなぜですか?

    • これらには初期化子リスト機能がありませんか?
0 投票する
2 に答える
734 参照

c++ - rows() メソッドは何をしますか?

rows()一般的に非常に優れた固有のドキュメントでは、 のメソッドへの参照が表示されMatrixBaseます。現在、行列の方向 (行/列優先) を知らなくても行列の行数を取得する方法を見つけようとしているので、単純に を呼び出すと非常に便利rows()です。

しかし、私はこれがどこにも文書化されているのを見つけることができません。この方法は何ですか?それは何をするためのものか?動的行列を返すだけEigen::Dynamicですか、それとも行数を知っていますか?

MatrixBase の参照ページを見ると、いくつかの言及がありますMatrixBase::rows()が、リンクはありません... 何かアイデアはありますか?

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

c++ - Eigen C++ ライブラリで GDB を使用する

http://eigen.tuxfamily.org/からダウンロードできる Eigen C++ ライブラリを使用しています。これは、行列と配列を簡単に処理するための C++ ライブラリです。デバッグには g++ コンパイラと gdb を使用します。ただし、gdb を使用しているときに、Matrix (Eigen が提供) の内容を印刷できないことがわかりました。

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

c++ - 'const Eigen::GeneralProduct から変換できません' を '2 倍にする'

この行を計算するたびに、このエラーが発生し続けます

どこでEigen::MatrixXd Z(3,3), b(3,1);。キャストを試みましたが、運がありません。助言がありますか?

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

c++ - マトリックスからゼロ行を削除する (エレガントな方法)

いくつかのゼロ行を含むマトリックスがあります。ゼロ行を削除したいと思います。行列は Nx3 です。私がやったことは簡単です。3 つの要素ごとに行を表すものを作成std::vectorし、それを に変換しEigen::MatrixXdます。ゼロ行を削除するエレガントな方法はありますか?

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

c++ - ファイルから固有行列を読み取る方法は?

次のようなファイルに固有行列を書き込むことができることを知っています。

もう一度読むのに最も簡単な方法は何ですか?これはうまくいかないようです:

次のコンパイラ エラーが発生します。

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

c++ - Eigen Library の大きなマトリックス内にサブマトリックスを作成する

次のマトリックスを構築したいと思います

B & C常にゼロです。A単位行列です。Dトリッキーです。それらはインデックスに基づいて指定されます。たとえば、インデックスが の場合0D

インデックスが1_D

Eigen Library でこの手順を実行するにはどうすればよいですか? Eigen で行列を作成する方法は知っていますが、それらを 1 つの行列として構築する方法がわかりません。