問題タブ [eigen]

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 に答える
22226 参照

c++ - 行列を固有値のファイルに書き込みますか?

Eigen ライブラリを使用して C++ を学習しようとしています。

テキスト ファイルにエクスポートmするにはどうすればよいですか (ドキュメントを検索しましたが、書き込み機能についての言及は見つかりませんでした)。

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

c++ - 固有値で std::nth_element を使用し、関連する尋問を行う

私は独学で c++ と固有値を一度に学んでいるので、これは簡単な質問かもしれません。

n と 0 "<" m "<" n と、float の n-ベクトル d が与えられます。具体的にするには:

d の m 番目に大きいエントリより小さいか等しい d のすべてのエントリのインデックスを含む m-vector d_prim onf integers が必要です。効率が重要です。データに描画がある場合、d_prim に、その m 番目に大きいエントリよりも小さい d の最初の m エントリを埋めることは問題ありません (m ^ 番目に大きいエントリよりも大きくない m の数値のインデックスが本当に必要ですd)。

私は(素朴に)試しました:

しかし、それには2つの問題があります:

  1. うまくいきません
  2. 機能したとしても、d(m) より小さいエントリのインデックスを見つけるために、d の (コピー) を 1 回渡す必要があります。これは必要ですか?

一番、

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

c++ - Eigen で行列の列にベクトルとしてアクセスする

行列から単一のベクトルにアクセスするにはどうすればよいですか?

例:を返すA(i)行列のようなものを使用してベクトルを抽出する方法はありますか?Eigen::MatrixXf A(10,10)Eigen::VectorXf A(10)

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

c++ - Eigen のユーザー定義構造体の配列

Eigen でベクトルまたは行列として使用するために、より複雑なデータを含む配列を適応させることが可能かどうか疑問に思います。

例:

numericValueメンバーにアクセスし、計算にデータセットを使用する方法を eigen に伝えることは可能ですか? ドキュメントでマップクラスを見つけましたが、必要な機能は見つかりませんでした。何か案は?

0 投票する
4 に答える
1896 参照

c++ - C ++のベストプラクティスでのマトリックス作成の破棄?

多くの小さな関数を含むc++コードがあるとします。各関数には、通常、中間計算の結果を含めるために実行時に既知のn、pの行列float M1(n、p)が必要です(M1を初期化する必要はありません)。 、各関数がM1のすべての行を上書きするため、宣言するだけです)。

この理由の一部は、各関数が変更できない元のデータマトリックスで機能するため、「他の場所」で多くの操作(並べ替え、意味の変更、球形化)を実行する必要があるためです。

各関数内に一時的なM1(n、p)を作成するか、main()内に一度だけ作成して、各関数がスクラップスペースとして使用できる一種のバケットとして各関数に渡す方がよいでしょうか。

nとpは、nの場合は[10 ^ 2-10 ^ 4]、pの場合は[5-100]と適度に大きいことがよくあります。

(元々はcodereview stackexchangeに投稿されていましたが、ここに移動しました)。

一番、

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

c++ - Eigenオブジェクトをメインからアタッチされたクラスの関数に渡すことができません

私はメインにいて、Eigenオブジェクトを別のクラスにある関数に渡そうとしています。両方の関数が同じファイルにある場合、問題なくこの関数呼び出しを行うことができます。問題については、サンプルコードを参照してください。リンクしません。問題は何ですか、どうすれば修正できますか?

Eigenの作成者であるeigen.tuxfamily.orgは、eigenオブジェクトを関数に渡す方法について話します。残念ながら、私は彼らの例を単一のファイルを超えて拡張することができませんでした。

オブジェクトを渡す方法:

http://eigen.tuxfamily.org/api/TopicPassingByValue.html

式テンプレートを使用してオブジェクトを渡す方法:

http://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html

main.cpp

MatrixMathTester.h:

MatrixMathTester.cpp:

エラー

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

c++ - 固有値に関する初心者の問題

固有値に関していくつかの初心者の質問があります。

以下は、それらを説明するための小さな関数です。

  1. h_m<n (n が指定されている) で h=1 から h=h_m に、ある反復から次の反復へとサイズが大きくなるベクトルがあります。固有オブジェクトの .reserve() 関数が見つかりませんでした。これは、反復ごとにこれらのオブジェクトのサイズを変更する必要があることを意味します。これを回避する方法を教えていただけますか?

    p>

  2. 行 b_4 は、実行時にこのエラーを引き起こします (上記の b.0->b.4 を数回繰り返した後):

    eigen/Eigen/src/Core/Block.h:278: Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel, true>::Block(XprType&, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel, true> ::Index) [with XprType = Eigen::Matrix<float, -0x00000000000000001, -0x0000000000000001>, int BlockRows = 1, int BlockCols = -0x0000000000000001, bool InnerPanel = false, Eigen::BlockBlock<XprType, BlockRows, パネル列, , true>::Index = long int]: アサーション `(i>=0) && ( ((BlockRows==1) && (BlockCols==XprType::ColsAtCompileTime) && i<xpr.rows()) ||( (BlockRows==XprType::RowsAtCompileTime) && (BlockCols==1) && i<xpr.cols()))' が失敗しました。
    中止しました

私が問題を解決できるように、それが何を意味するのか理解するのを手伝ってもらえますか?

編集: cbamber85 の発言に続いて、エラーが 1 行上で発生しているように見えます。

RSubMatrix を調べます。

:(

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

math - 回転軸を見つける

固有値ライブラリを使用して、平面を地面に平行になるように回転させています。地面は法線ベクトル(0,0,1)を使用して定義されます。ターゲット平面は3Dポイントのセットであり、法線回転角度は平面の法線ベクトルであり、その平面上のすべてのポイントは次のようになります。地面に平行になるように回転

http://eigen.tuxfamily.org/api/TutorialGeometry.html のようなアフィン変換を使用したいのですが

変換t=AngleAxisf(a、axis);
この場合の軸は、回転が行われる任意の軸を表す行列です。この軸を見つける方法は?

どうもありがとう

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

c++ - C ++ eigen3線形代数ライブラリ、奇妙なパフォーマンス結果

私はしばらくの間c++でeigen3線形代数ライブラリを使用してきましたが、常にベクトル化のパフォーマンスの利点を利用しようとしました。今日、私は、ベクトル化によってプログラムが実際にどれだけ高速化されるかをテストすることにしました。だから、私は次のテストプログラムを書きました:

--- eigentest.cpp ---

次に、さまざまなコンパイラオプションを使用してコンパイルした後、このプログラムを実行しました:(結果は1回限りではなく、多くの実行で同様の結果が得られます)

そして、これが私の関連するCPU情報です:

-march=nativeコンパイラオプションを使用しない場合は、使用する場合とは対照的に、セグメンテーション違反やベクトル化による誤った結果が発生しないため、コンパイラオプションを使用しない場合はベクトル化が行われないことを知っています(と-NDEBUG)。

これらの結果から、少なくともeigen3を使用したCPUのベクトル化では、実行が遅くなると思います。誰のせいですか?私のCPU、eigen3またはgcc?

編集:疑問を取り除くために、-DEIGEN_DONT_ALIGNベクトル化なしの場合のパフォーマンスを測定しようとしている場合にコンパイラオプションを追加しようとしましたが、結果は同じです。-DEIGEN_DONT_ALIGNさらに、一緒に追加すると-march=native、結果は。なしの場合に非常に近くなり-march=nativeます。

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

c++ - OpenCV2.3.1でのEigenライブラリの使用

C++でOpenCVアプリケーションと一緒にEigen3ライブラリを使用するのに問題があります。次のコマンドを使用して、UbuntuにEigen3ライブラリをインストールしました。

次のコマンドを使用してコンパイルすると、サンプルのEigen3アプリケーションをコンパイルして使用できます(Eigen3ライブラリがインストールされて動作します)。

インストールされているEigenライブラリをOpenCVで使用したい。

次のフラグを使用してOpenCVソースをコンパイルしました。

私のOpenCVコードには、次のヘッダーと名前空間が含まれています。

ただし、通常OpenCVアプリケーションをコンパイルすると、コンパイラで次のエラーが発生します。

この問題を解決するにはどうすればよいですか?