確率系のKalmanフィルタを構築する
Kalmanフィルタは,ノイズの多い系の出力を推定する便利なものである.ノイズの多い系(この場合はアンテナ)は,その入力の1つにホワイトノイズが入っていき,その出力にホワイトノイズが加えられている.Kalmanフィルタはアンテナ(
)からのノイズのある出力と,アンテナ (
)へのノイズのない入力の両方を取り込み,実際の出力により近いフィルタ付きの出力信号を作成する.フィルタ付きの信号は最適(エラーが最小化されている)である.
XXantenna = Subsuperscript[(| | | | |
| --- | -------- | ------ | ------- |
| 0.5 | 0.07869 | 0.0042 | 0.0104 |
| 0 | -0.60653 | 0.0786 | 0.00786 |
| 1 | 0 | 0 | 0 |), 0.1, 𝒮];
W = {{0.01}};V = {{0.001}};kalmanFilter = SystemsModelExtract[KalmanEstimator[{XXantenna, All, 1}, {W, V}], All, {3}];
u = Table[Sin[(2 π i/20.0)], {i, 100}];processNoise = RandomReal[NormalDistribution[0, Sqrt[W[[1, 1]]]], {100}];
measurementNoise = RandomReal[NormalDistribution[0, Sqrt[V[[1, 1]]]], {100}];
y = Flatten[OutputResponse[XXantenna, {u, processNoise}]] + measurementNoise;ListLinePlot[y]
ListLinePlot[OutputResponse[kalmanFilter, {u, y}]]