問題タブ [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.
eigen3 - eigen3 の head 関数が間違った結果を生成する
ベクトル s のサブセットを取得したいのですが、次のコードでは正しい結果が得られませんでした。でも書いたら
そうです。次のコードが間違っているのはなぜですか? ありがとう!
c++ - テンプレート化されていない固有ベクトルを関数引数として渡し、関数でそれを変更するc ++
派生クラスの関数メンバーを実装しています (基本クラスで仮想として宣言されています)。引数の 1 つは vectorXd で、操作の結果が格納される場所です。
「パラメーターとして固有型を取得する関数の記述」( http://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html ) を読み、そのハックはテンプレート化された関数に依存し、可能なパラメーターとして一般的な固有オブジェクトに焦点を当てています。私の場合、仮想とテンプレートを混在させることはできないようですので、うまくいかないと思います。
一方、私の引数は常に VectorXd 型になることがわかっており、関数内でサイズ変更が不要になるように、関数に入る前に適切なサイズにサイズ変更することもできます。ベクトルを const として参照渡しし、const_cast を使用して必要な変更を加える方法を試していますが、それでもリンク エラーが発生します。
エラー LNK2001: 未解決の外部シンボル "public: virtual void __thiscall problem::f(class method *,class Eigen::Matrix const &,class Eigen::Matrix const &)" (?f@problem@@UAEXPAVmethod@@ABV? $Matrix@N$0?0$00$0A@$0?0$00@Eigen@@1@Z)
ここで、'problem' は基本クラス、'f' は関数、'method' は別のクラスです (関数内にもその型のオブジェクトが必要です)。
私が持っている問題の定義では:
派生: 問題の定義には、次のようなものがあります。
「y」は、結果を保存する必要がある場所です。これを達成する方法について何か提案はありますか? ありがとうございます。
c++ - Eigen によるインプレース LDLT 分解
非常に大きな対称行列 (~800mb) を使用して線形代数を実行しており、いくつかの異なる分解を試しています。現在、私は LDLT を実装しています。これを利用して、行列の上三角を L^T で上書きすることにより、メモリ要件を半分にしたいと考えています。Eigen のドキュメントにはこれを実行する方法が記載されていませんが、内部名前空間にはいくつかの隠しメソッドがあり、私が望むことを実行できる可能性があります。
メソッドは、次の構造体template<> struct ldlt_inplace<Lower>
とhttp://eigen.tuxfamily.org/dox/LDLT_8h_source.htmltemplate<> struct ldlt_inplace<Upper>
に
あります。
これらのメソッドが私が望むものであるというのは正しいですか? それらをどのように使用しますか?それらは内部的なものであり、変更や非推奨になる可能性があるため、使用を避けるべきですか?
matlab - Eigen ライブラリに収まる行列のサイズはどれくらいですか?
現在、300000 x 300000 マトリックスのような大規模なデータに取り組んでいます。「メモリ不足」エラーのため、matlab で処理するのは非常に難しいため、EIGEN を使用することにしました。行列サイズの固有値に制限はありますか?
c++ - パラメータとしての固定サイズ固有型
固定サイズの固有型を取る関数を作成しようとしています (ただし、float/double などのスカラー型でテンプレート化されています)。http://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.htmlを読みましたが、完全に機能させることはできません。
関数定義は次のとおりです。
今、私はこれを次のように使用しています:
ある種の を使用する必要があると思いますがMatrixBase<Derived>
、関数は長さ 3 のベクトルに対してのみ意味があるため、サイズを制限するにはどうすればよいでしょうか。
編集:関数を次のように再定義しました。それはうまくいきますが、より良い方法はありますか?
c++ - 排他的論理和、否定論理和を使用した bool 乗算 (固有行列ライブラリを使用)
ハミングエラー修正コードを実装しようとしています。これを行うには、bool Vector (データ) を取得し、bool Matrix (ハミング生成行列) で乗算し、XOR 演算を実行する必要があります (OR のように見えるものの代わりに)。 Eigen のデフォルトの bool 動作)。私がやっていることの例は、この簡単なチュートリアルにあります: http://michael.dipperstein.com/hamming/
必ずしも Eigen を使用する必要はありません。解決策があれば、Eigen 以外のものを提案してください。
たとえば、コンパイルはできるが正しく動作しない C++ コードは次のようになります。
現在の結果: 1 1 1 1 0 1 0
しかし、必要: 1 0 1 1 0 1 0
違いは、デフォルトの動作が乗算であり、次に各乗算を OR することです。OR ではなく XOR が必要なので、Eigen でこれを行う最善の方法は何ですか?
これが意味をなさない場合は、喜んで詳しく説明してください。
ところで、それが問題かどうかはわかりませんが、G ++を使用してMacBook Airに取り組んでいます。今日Eigenをダウンロードしたので、おそらく最新のものです(eigen3)
ありがとう、
キース
更新:以下の受け入れられた解決策を考えると、人々の参照として正しいコードを再投稿したかった:
c++ - A がスパースで、固有値を使用して xA=b 形式の線形連立方程式を解くことはできますか?
MATLAB コードを C++ に変換する必要があります。C++ には、xA=0 の形式の線形方程式が含まれています。
固有値は線形方程式 Ax=b を扱えることを知っています。私は尋ねています: C++ (Visual Studio 2010) の Eigen を使用して、線形方程式 xA=b のシステムを解く方法はありますか? A はスパース行列です。そうでない場合、どのライブラリを使用できますか?
助けてくれてありがとう。
c++ - Eigen::Ref<> と std::reference_wrapper<> の長所/短所は何ですか?
Eigen Eigen::Ref<>
3.2 でstd::reference_wrapper<>
導入され、C++11 で導入された は、非常によく似た目標を達成しているようです。
明らかに、Eigen::Ref<>
std::reference_wrapper<> のように C++11 依存関係を導入しませんが、他に何を考慮する必要がありますか? (私にとって、C++11 への依存は問題ではありません。)
参照は次のとおりです: (だからメタ、LOL):
c++ - Matlab の次の Matrix コードを C++ の Eigen に変換する際の問題
H、W、R、V は行列で、それぞれのサイズで既に初期化されています。「beta」は int、「myeps」は float です。行列の実装には、現在 Eigen ライブラリを使用しています。ただし、この Matlab コードを Eigen ベースの C++ コードに正常に変換するための構文がわかりません。
Matlab コード
C++ コード (これまでに試したこと)
このコードは正しいですか?
参考までに - これは NMF アルゴリズム (ベータ発散に基づく非負行列因数分解) のステップです。
どんな助けでも大歓迎です。