カルマンフィルターベースのモデリングコードを使用して、ほぼリアルタイムの地域電離層マッピングアプリケーション用に開発しました。このコードは、カルマンフィルターを使用して、さまざまなセンサーからのデータを(基本関数のセットで記述された)マップに同化します。
私はこれをより大きな領域とより多くのセンサーに拡大しようとしていますが、カルマンフィルターの行列代数部分は、関与する大きな行列(数千の行/列)のために非常に遅くなります。ランタイムの問題を攻撃する最善の方法は、これらの行列が通常、総要素の80%以上が非常にスパースであるという事実を使用することだと思います。これは、各センサーにマップ係数と一緒に推定されるバイアスパラメーターがあるためです。これは、カルマンHマトリックスのそのセンサーの列に1として表示され、他のすべてのセンサーおよびマップ係数の列には0が表示されます。数百のセンサーがあり、それぞれが各エポックで8〜10の観測値を提供しているため、多くのゼロがあります。
スパースアルゴリズム、特に乗算と反転*を使用してカルマンフィルターのコンポーネントを実装することを検討することもできますが、マトリックスがまばら?アンサンブルカルマンフィルターなどを使用できることはわかっていますが、可能であれば、純粋な線形カルマンフィルターの最適性を維持したいと思います。総データ量は禁止されていません。線形モデルから生じる大きなスパース行列だけです。
実装に関しては、これはIDLで行われますが、コア行列代数は、外部の最適化されたLAライブラリ(具体的にはATLAS)の呼び出しを介して行われます。
*最適なカルマンフィルターの実装では反転が回避され、代わりにUD分解が使用されます。私はこのようなものを実装することを検討しているので、それが答えになるかもしれませんが、マトリックスのスパース性を考慮してより良い解決策があるかどうかを探しています。