入力引数として精度行列と平均値があるmatlabでサンプルを描画する方法を知りたいです。
mvnrnd がそうするための典型的な方法であることは知っていますが、引数として共分散行列 (つまり、精度の逆行列) が必要です。
精度行列しかありませんが、計算上の問題により、時間がかかりすぎるため、精度行列を反転できません (私の次元は約 2000*2000 です)。
入力引数として精度行列と平均値があるmatlabでサンプルを描画する方法を知りたいです。
mvnrnd がそうするための典型的な方法であることは知っていますが、引数として共分散行列 (つまり、精度の逆行列) が必要です。
精度行列しかありませんが、計算上の問題により、時間がかかりすぎるため、精度行列を反転できません (私の次元は約 2000*2000 です)。
良い質問。関連するウィキペディアの記事で説明されている手順を使用して、標準正規分布からのサンプルを使用して、多変量正規分布からサンプルを生成できることに注意してください。
基本的に、これは、 が標準正規分布からサンプリングされた独立確率変数のベクトルであり、 が平均のベクトルであり、が共分散行列A*z + mu
である場所を評価することに要約されます。後者の量の逆数、つまり があるので、おそらくコレスキー分解 ( を参照) を実行して の逆数を求めることができます。次に、 を評価する必要があります。逆行列を実行せずに、代わりに線形システムを解くことでこれを行うことができます (たとえば、バックスラッシュ演算子を使用) 。z
mu
A*A' = Sigma
inv(Sigma)
chol
A
A * z
inv(A)
コレスキー分解はまだ問題があるかもしれませんが、これがお役に立てば幸いです。