码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 卡尔曼滤波器的推导


    参考资源

    【卡尔曼滤波器】1_递归算法_Recursive Processing_哔哩哔哩_bilibili

    【卡尔曼滤波器】2_数学基础_数据融合_协方差矩阵_状态空间方程_观测器问题_哔哩哔哩_bilibili

    【卡尔曼滤波器】3_卡尔曼增益超详细数学推导 ~全网最完整_哔哩哔哩_bilibili

    【卡尔曼滤波器】4_误差协方差矩阵数学推导_卡尔曼滤波器的五个公式_哔哩哔哩_bilibili

    【卡尔曼滤波器】5_直观理解与二维实例【包含完整的EXCEL代码】_哔哩哔哩_bilibili

    说明

    我是跟着DR_CAN老师几篇视频的讲解,自己推导了一遍,加深理解,也方便查阅。老师讲得很好。

    Kalman filter is an optimal recursive data processing algorithm.

    卡尔曼滤波器是一个最优的、递归的数据处理算法,可以对输入数据进行时间递归处理。它是一个线性滤波器。

    数据预测具有不确定性,数据测量也有不确定性,卡尔曼滤波是根据不那么准确的预测模型、和不那么准确的观测,来拟合出一个最优值。

    递归算法

    假设用一把尺子对一个物体进行测量,测了k次,测量值分别是z_{1},z_{2},...,z_{k}现在求估计值。

    测量了k次的估计值为:

    上式表达的意思是:

    当前的估计值 = 上次的估计值 + 系数 *(当前的测量值 – 上次的估计值)

    在卡尔曼滤波器中,K_{K} 是卡尔曼增益(Kalman Gain)。

    定义估计误差和测量误差:

    估计误差e_{EST}:代表估计值和真实值的差距

    测量误差e_{MEA}:代表测量值和真实值的差距

    手工计算前面几次:

    用excel计算:

    根据excel计算结果画的图:

    数学基础:数据融合、协方差矩阵、状态空间方程

    数据融合

    例如用两个称称一个物体,两个称都不准。

    协方差矩阵

    协方差矩阵,将方差、协方差在一个矩阵中表现出来,体现了变量间的联动关系。

    例子:

    球员

    身高x(厘米)

    体重y(公斤)

    年龄z

    哈兰德

    194

    87

    23

    孙兴憨

    183

    78

    31

    萨拉赫

    175

    71

    31

    平均

    184

    78.7

    28.3

    协方差:

    协方差矩阵:

    定义矩阵:

    则,协方差矩阵:

    更多球员的数据:

    球员

    身高x(厘米)

    体重y(公斤)

    年龄z

    哈兰德

    194

    87

    23

    孙兴憨

    183

    78

    31

    萨拉赫

    175

    71

    31

    因莫比莱

    184

    78

    33

    伊瓜因

    184

    72

    36

    莫拉塔 

    189

    85

    31

    贝林厄姆

    186

    81

    20

    莱万多夫斯基

    185

    81

    34

    求出的协方差矩阵是:

    身高

    体重

    年龄

    身高

    25.5

    23.5

    -11.25

    体重

    23.5

    27.86

    -14.48

    年龄

    -11.25

    -14.48

    26.61

    状态空间表达

    将上面四个方程,用矩阵形式表示出来,作为状态空间方程:

    卡尔曼增益的数学推导

    假设噪声符合正态分布:

    其中上式中E表示期望。

    下面证明:

    如果X的期望为0,即E(X)=0,那么

    因为假设噪声符合期望为0的高斯分布,所以:

    定义后验估计误差e_{k}:

    下面计算协方差矩阵P:

    进一步提取:

    定义先验估计误差e_{k}^{-}:

    可得:

    得到后验估计误差的协方差矩阵:

    目标是使后验估计误差协方差矩阵P_{k}的迹(trace)最小。

    P_{k}的迹:

    因为一个矩阵和它的转置矩阵的迹相同,所以:

    上式就是卡尔曼增益的公式,是卡尔曼滤波中的一个核心公式。

    其中R是测量误差的协方差矩阵。

    当R很大的时候,即测量误差很大的时候,K_{K}\rightarrow 0

    由上面的公式:

    可知,此时的后验估计值等于先验估计:

    当R很小,即测量误差很小的时候:

    此时的估计值等于测量值:

    误差协方差矩阵

    卡尔曼滤波器的5个公式:

    在卡尔曼增益公式推导过程中,我们已经得出:

    通过一个二维实例直观理解卡尔曼滤波器

     

    考虑一个人走路,假设匀速行驶。分别设定两个状态变量:

    x_{1}:表示位置

    x_{2}:表示速度

    此时,速度和位置状态方程变为:

    因为加上了不确定性,所以就无法直接通过上面两个式子求出k时刻的位置、速度。但是可以估计,根据噪声的误差来估计。

    卡尔曼滤波器分两个步骤:预测和校正:

    用excel计算:

    为了简化起见,设Q矩阵、R矩阵的协方差项为0,即各误差项之间是相互独立的。所以Q矩阵和R矩阵只有对角线上的值不等于0。矩阵的值自己可以修改

  • 相关阅读:
    【SpringCloud】06 链路跟踪 Sleuth+zipkin
    Linux gcc和make学习
    卓越的 App UI 风格引领潮流
    Gson反序列化List<T>数据返回问题解决方案
    LLM实战:LLM微调加速神器-Unsloth + LLama3
    按照指定条件对数据进行分组并对每个分组内的全部数据应用自定义函数进行聚合计算groupby().apply()
    【正点原子STM32连载】 第六十四章 综合测试实验摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
    30天Python入门(第十九天:深入了解Python中的文件处理)
    Python_Numpy库的ndarray对象的属性有哪些?如何获取它们的值?
    1.Linux蓝牙基础
  • 原文地址:https://blog.csdn.net/panghuangang/article/details/134529501
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号