构建随机系统的卡尔曼滤波器
卡尔曼滤波器可以给出有噪声系统的输出的有用估计. 在这个例子中,天线作为一个噪声系统,有白噪声进入其中一个输入端,并将白噪声添加到其输出. 卡尔曼滤波器取天线的带有噪声的输出 (
) 和天线的无噪声输入 (
),产生了一个更接近实际输出的经过滤波的输出信号. 滤波后的信号是最优的(误差被最小化).
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}]]