zoukankan      html  css  js  c++  java
  • 卡尔曼滤波

    引入一个离散控制的系统,可以用一个线性随机微分方程来描述:
    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)

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

  • 相关阅读:
    C# fields Study
    单词1
    C# Base Class Study
    C# Type Parameters Study
    C#3.0学习系列类的成员
    美国式教育
    单词2
    项目添加Struts2支持,并修改默认后缀
    Java多线程的学习和应用
    SQL PIVOT
  • 原文地址:https://www.cnblogs.com/sanmenyi/p/7197737.html
Copyright © 2011-2022 走看看