5
共分散行列の平方根を正定にする(Matlab)
動機:私は、MATLAB(無香料カルマンフィルター)で状態推定器を書いています。これは、反復ごとに(つまり、共分散行列に対して)共分散行列の(上三角)平方根の更新を要求します。、)であることは事実です。必要な計算を実行するには、MATLAB 関数を使用して、ランク1のコレスキー更新とダウンデートを行う必要があります。P P = S S TSSSPPPP= SSTP=SSTP=SS^{T}cholupdate 問題:残念ながら、反復の過程で、この行列は正定性を失う場合があります。コレスキーのダウンデートは、非PDマトリックスでは失敗します。SSS 私の質問は、MATLABで正定にする簡単で信頼できる方法はありますか?SSS (またはより一般的には、任意の共分散行列を正定にする良い方法はありますか?バツXX) 注: SSSはフルランクです 私は固有分解アプローチを試しました(これは機能しませんでした)。これは基本的に見つけ、すべての負の要素を設定し、新しいを再構築することを含み、ここでは正の要素のみをもつ行列です。 V 、D = 1 × 10 − 8 S ′ = V ′ D ′ V ′ T V ′、D ′S= VD VTS=VDVTS = VDV^{T}V、D = 1 × 10− 8V,D=1×10−8V,D = 1 \times 10^{-8}S』= V』D』V′ TS′=V′D′V′TS' …