問題タブ [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.
c++ - このプログラムをベクトル化する方法
以下のプログラム ("from here" の後の行) は、私が頻繁に使用しなければならない構造です。(最終的に固有ライブラリの関数を使用して) ベクトル化するか、このプログラムをより高速に実行できるかどうか疑問に思っていました。
基本的に、 のベクトルが与えられたfloat
x
場合、この構文は のソートされた要素のインデックスをベクトル に復元x
しint
ますSIndex
。たとえば、 の最初のエントリSIndex
が 10 の場合、 の 10 番目の要素x
が の最小の要素であったことを意味しx
ます。
opencv - EigensCount を TrainingImagesCount-1 より大きくできない理由 [EigenObjectRecognizer]
http://www.cognotics.com/opencv/servo_2007_series/part_5/fig_6_thumb.png
上の写真で nEgiens が nTrainFace-1 を超えてはいけない理由を誰か説明できますか?
私は EmguCv を使用しています。nEgiens と nTrainFace が等しい場合、最後の固有画像が空白 (黒) に返されます。ただし、emgucv の実装では:
c++ - 劣決定系から解けない方程式を取り除く
私のプログラムは連立一次方程式を解こうとします。そのために、行列coeff_matrix
とベクトルvalue_vector
を組み立て、Eigenを使用して次のように解きます。
問題は、システムが過大評価と過小決定の両方になる可能性があることです。前者の場合、Eigenは正しい解または正しくない解を与え、私はを使用して解をチェックしcoeff_matrix * sol_vector - value_vector
ます。
ただし、次の連立方程式を考慮してください。
a
この特定のケースでは、Eigenは後者の3つの方程式を正しく解きますが、との解も与えますb
。
私が達成したいのは、解が1つしかない方程式だけが解かれ、残りの方程式(ここでは最初の方程式)がシステムに保持されることです。
言い換えれば、私は、その時点で特定の連立方程式で解ける方程式と、複数の解があるために解けない方程式を見つける方法を探しています。
それを達成するための良い方法を提案できますか?
編集:ほとんどの場合、マトリックスは正方形ではないことに注意してください。過剰決定も発生する可能性があることに注意するために、ここにもう1行追加しました。
eigen - 固有値で行ごとの maxCoeff と maxCoeff のインデックスを見つける
行列の行ごとに最大値とインデックスを見つけたい。これは、 eigen Web サイトの例 (例 7)に基づいています。
ここでの問題は、私の行です
間違っている。元の例には
つまり、追加のリダクション .sum() が含まれます。助言がありますか?私は、matlabで次のように書くものと同等の固有値が欲しいだけだと思います
つまり、最大値を見つけ、それは mymatrix の 2 番目の次元のインデックスであり、(nrow(mymatrix),2) マトリックスで返します。ありがとう!
(固有リストにも送信されます。クロスポストはご容赦ください。)
c++ - Eigen と boost::thread を使用した C++ での奇妙なメモリ リーク
プログラムで 2 つのスレッドを実行しています。これらは boost::thread を使用して作成されます。
2 つのスレッドは、メモリに関して何も共有しません。それらの間でデータ構造やオブジェクトが共有されることはありません。
ここで、2 番目のスレッドはプライベート メンバーとして多くの二重固有行列を持つクラスを使用します。Eigen ディレクティブ EIGEN_MAKE_ALIGNED_OPERATOR_NEW などを使用して行列が整列されていることを確認します
最初のスレッドが実行されているとき、2 番目のクラスの行列の要素は上書きされます。小数のはずの要素がいきなり整数になってしまうので調べてみました。最初のスレッドが実行されていない場合、2 番目のスレッドには問題がなく、その Eigen メンバーは正しい値を持っています。
繰り返しますが、1) 2 つのスレッドはデータ構造を共有していません。2) プログラムの実行中に、セグメンテーション違反メッセージまたは同様のメッセージまたはエラー メッセージが表示されない。3) 2 番目のスレッドのメモリを保護する方法、またはメモリがどのように侵害されたかを追跡する方法について何か提案はありますか?
前もって感謝します。コードを投稿しなかったことは本当に申し訳ありませんが、それは巨大です。コードから特定のものを投稿してほしい場合はお知らせください。
c++ - std::vector と boost::thread によるメモリ管理
次のコードがあるとします
明らかに、このプログラムはある時点でメモリ不足になり、std::bad_alloc
. しかし、私の質問は次のとおりです。
- その前に obj1 の private_vector が obj2 の private_vector で上書きされる場合はありますか? これから保護する方法はありますか?
- EIGEN_MAKE_ALIGNED_NEW_OPERATOR を定義するときに、クラス内の private_vector をメモリ内で整列するように強制すると (Eigen がその行列で行うように)、これは質問 1 のように変更されますか?
c++ - テンプレート化されたクラスのデストラクタを呼び出すにはどうすればよいですか?
ライブラリEigenの SparseMatrix クラスを使用しています。作成するには、次を使用します。
このオブジェクトのデストラクタを呼び出すにはどうすればよいですか?
c++ - C++の逆イテレータと固有値
私は、JFセバスチャンによる2つのソートされた配列のk次統計量の実装を使用しており、ある程度の成功を収めています。
基本的に、このアルゴリズムは、長さlaとlbの2つのソートされた配列AとBを入力として受け取り、それらの和集合のk番目に大きい要素をlog(la)+ log(lb)回返します。
ただし、私のアプリケーションでは、Aが降順でソートされる場合があります。幸いなことに、私はこれらのケースが何であるかを事前に知っています。だから私はいつでもすることができます:
(A.data()
およびA.data()+A.size()
は、それぞれA.begin()およびA.end()の固有構造です)。
Aが降順でソートされている場合:
これは[:)]動作しますが、非常に複雑に見えます[:(]と(おそらく)非効率的です。特に、最後にAを元の順序に戻す必要があるためです。
std::reverse
上記を次のように置き換えようとしました
...。
しかし、これによりg++がしわがれます。
そして私はそれを修正する方法がわかりません。
しかし、これは期待される結果を与えません:!
c++ - C++Eigenライブラリのベクトル配列を変換します
Eigen数学ライブラリを使い始めると、非常に単純なタスクで問題が発生します。クォータニオンを使用して一連のベクトルを変換します。私が行うすべての結果がoperator*
見つからないか、配列と行列が混在しているようです。
c++ - 配列を既存の固有行列にマッピングし直す
doubleの配列を既存のMatrixXd構造体にマップしたいと思います。これまでのところ、Eigen行列を単純な配列にマッピングすることができましたが、それを元に戻す方法が見つかりません。