卡尔曼滤波

引入一个离散控制的系统,可以用一个线性随机微分方程来描述:
X(k) = A X(k-1) + B U(k) +W(k)
再加上系统的观测方程:
Z(k) = H X(k) + V(k)
其中,X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量,A和B是系统的参数,Z(k)是k时刻的测量值。
该线性随机微分系统的状态和观测为高斯白色噪声,也就是说与时间无关。
若系统满足上述条件,则卡尔曼滤波器就是最优的信息处理器。

算法推导:
首先,利用系统的状态模型来预测下一状态的系统,假设现在的系统状态是X(k),可以基于上一个状态预测出现在的状态:
X(k | k-1) = A X(k-1 | k-1) + B U(k)
X(k | k-1) 是利用上一状态预测的结果; X(k-1 | k-1)是上一状态的最优结果; U(k)是现在的控制量。
对应于X(k | k-1)的协方差没有更新,用P表示协方差:
P(k | k-1) = A P(k-1 | k-1) A' + Q
P(k | k-1)为X(k | k-1)对应的协方差,Q为系统状态的协方差。
现在有了预测结果,再找观测值Z(k),结合预测值和观测值,可以得到状态k的最优化估计值X(k | k):
X(k | k)=X(k | k-1) + kg(k) ( Z(k) - H X(k | k-1))
其中kg = P(k | k-1) (H') / ( H P(k| k-1)H' + R)
这样就得到了k状态下的最优估计值X(k | k),为了能不断运行,需要更新k状态下的X(k | k)的协方差:
P(k | k) = (I - kg(k) H) P(k | k-1)

举个简单的例子:
研究对象:房间温度,根据

原文地址:https://www.cnblogs.com/sanmenyi/p/7197737.html