問題タブ [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 投票する
0 に答える
1060 参照

c++ - 固有値とコレスキー分解: 不安定性の問題?

私は 3D サーフェス メッシュに取り組んでおり、各頂点近傍に二次多項式を当てはめることでガウス曲率値を取得しようとしています。多項式係数を取得するために、Eigen パッケージ (C++) に含まれる標準のコレスキー分解 (LL^T) を使用して、システム Ax = b を解きます。ここで、A は対称正定行列です。

システムを解くとき、解の 1 つだけで最も奇妙な値が得られます (約 2000 の頂点の中で!)。これは、私の対称正定行列の逆になるもののサンプルです。

各行列の最初の要素を比較するだけで、違いがわかります: 288 (頂点 85)、496411 (頂点 86)、頂点 87 の通常の値: 523.131...

これが私が使用しているコードの一部です(Bは私の対称正定行列です):

何か不足しているかどうかはわかりません...不安定な問題である可能性があります。丸めエラーでしょうか? これらの予期しない結果を取り除くにはどうすればよいですか? ありがとう、ミゲル

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

c# - Solving Eigen System in c#?

Do you know of a good library/way that I can use to solve an eigen system in c#?

My data is 2D/3D and I want to get direction and length of first and second eigen vectors to evaluate how my data is elongated in 2D space.

Thanks

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

opencv - Copy select rows into new matrix

I want to copy the rows 0, 2 and 4 of my matrix A into B, in this order. Let A = [a0, a1, a2, a3, a4]^T , with a_i being row-vectors, then B should be: [a0, a2, a4]^T.

The code below does what I want but I wonder whether there is a prettier solution (maybe using Eigen)?

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

c++ - 固有ライブラリselfadjointViewの問題

固有ライブラリを使用して任意の行列またはスパース行列のselfadjointViewプロパティを使用しようとすると、常にエラーメッセージが表示されます。以下はそれをチェックするための簡単なコードです。私のプログラムでは、自己随伴行列を試してみます。

私が受け取るエラーメッセージは次のとおりです。エラー:「Eigen :: SparseMatrix :: selfadjointView()」を呼び出すための一致する関数がありません</ p>

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

c++ - C++で2次元を超える多変量ガウス確率密度関数を実装する

私はC++で多変量ガウス分布の確率密度関数を実装することに取り組んでおり、次元が2より大きい場合を最適に処理する方法に固執しています。

ガウス分布のpdfは次のように書くことができます

多変量ガウスpdf

ここで、(A)'またはA'は、xのすべての要素から平均を減算することによって作成された'行列'の転置を表します。この方程式では、kは次元数であり、シグマはakxk行列である共分散行列を表します。最後に、| X | 行列Xの行列式を意味します。

単変量の場合、pdfの実装は簡単です。二変量(k = 2)の場合でも、それは些細なことです。ただし、2次元を超えると、実装ははるかに困難になります。

二変量の場合、

二変量ガウスpdf

ここで、rhoはxとyの間の相関であり、相関は次のようになります。

2つの確率変数XとYの間の相関

この場合、Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>Eigenの単純化された線形代数インターフェースの恩恵を受けることなく、最初の方程式を実装するために使用することも、2番目の方程式を使用してすべてを自分で計算することもできます。

多変量の場合の試みについての私の考えは、おそらく上記の方程式を多変量の場合に拡張することから始まります。

多変量pdf

多変量pdf

私の質問は次のとおりです。

  1. n次元配列にを使用するのが適切/推奨されますboost::multi_arrayか、それとも代わりにEigenを活用する必要がありますか?
  2. 単変量/二変量の場合に別々の関数を使用する必要がありますか、それとも、boost :: multi_array(または適切な代替)を使用してすべてを多変量の場合に抽象化する必要がありますか?
0 投票する
2 に答える
879 参照

c++ - パラメータ化可能な「ゼロ」を持つスパース行列クラス

ログドメインのfloatのスパース行列でいくつかの計算を行っているため、「空の」エントリは実際には-Infです(-FLT_MAXを使用)。現在、カスタムのスパース行列クラスを使用していますが、既成の代替品に交換したいと思っています。

これはC++です。私の傾向は、EigenとBoostuBlasの圧縮された列マトリックスを調べることでした。ただし、どちらも「ゼロ」のカスタム値をサポートしていることは明らかではありません(おそらくテンプレートパラメータによって提供されます)。誰か提案がありますか?

明確化

私が欲しいのはこれです:以前に「設定」されていないセル(i、j)については、mat [i、j]に-Inf ...を返してもらいたいので、これはおそらく「デフォルト」としてより適切に説明されます。スパース行列の「空の」エントリの値。

これを使用して、アンダーフローを回避するためにログドメインに保持された確率でHMM再帰(Viterbi、sum-product)を実行しています。

私は行列演算を行っていません...基本的に、動的計画法のタブローを埋めているだけです。行列のバンドのみを入力していて、メモリを効率的に使用したいので、スパース行列クラスを使用したいと思います。圧縮された帯行列は、行列を「順番に」入力しているので、良好なパフォーマンスが得られます。

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

iphone - iPhoneでEigenをコンパイルする方法

Eigenをコンパイルして、NEON機能を備えたiPhoneで使用したいと思います。iPhoneでEigenをコンパイルする方法は?特定のARMチップ用にコンパイルする必要がありますか?また、ビルドスクリプトを変更する必要がありますか?

乾杯。

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

math - AとBが与えられた場合のTrace(AB ^ {-1})の効率的な計算

2つの正方行列AとBがあります。Aは対称、Bは対称正定値です。$ trace(AB ^ {-1})$を計算したいと思います。今のところ、Bのコレスキー分解を計算し、方程式$ A = CB $でCを解き、対角要素を合計します。

より効率的な進め方はありますか?

Eigenを使う予定です。行列がスパースである場合(Aは多くの場合対角であり、Bは多くの場合バンド対角である)、実装を提供できますか?

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

c++ - EigenでSparseVectorを初期化するにはどうすればよいですか?

EigenでSparseVectorを初期化するにはどうすればよいですか?次のコード:

次のエラーが発生します

エラー:適切なoperator()または関数へのポインタ型への変換関数を使用せずにクラス型のオブジェクトを呼び出すvec(0)= 1.0;

ちなみに、vec [0]=1.0も動作しません。

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

c++ - Eigenを使用した式のベクトル化

Eigenライブラリを使用する私のプログラムでは、2Dベクトルを操作する必要があります。私の内側のループには、次の関数があります。

x()この式は厄介ですが、とy()計算の両方が同じパスをたどるため、ベクトル化の主要な候補のように見えます。私の質問は、手動でアセンブリにドロップダウンする必要なしに、Eigenでそれを行う方法です。