大家好,又见面了,我是你们的朋友全栈君。
一、预备知识
1、协方差矩阵
是一个维列向量,是的期望,协方差矩阵为
可以看出
协方差矩阵都是对称矩阵且是半正定的
协方差矩阵的迹是的均方误差
2、用到的两个矩阵微分公式
公式一:
公式二:若是对称矩阵,则下式成立
tr表示矩阵的迹,具体推导过程参考相关矩阵分析教程
二、系统模型与变量说明
1、系统离散型状态方程如下
由k-1时刻到k时刻,系统状态预测方程
系统状态观测方程
2、变量说明如下
:状态转移矩阵
:系统输入向量
:输入增益矩阵
:均值为0,协方差矩阵为,且服从正态分布的过程噪声
:测量矩阵
:均值为0,协方差矩阵为,且服从正态分布的测量噪声
初始状态以及每一时刻的噪声都认为是互相独立的,实际上,很多真实世界的动态系统都并不确切的符合这个模型;但是由于卡尔曼滤波器被设计在有噪声的情况下工作,一个近似的符合已经可以使这个滤波器非常有用了。
三、卡尔曼滤波器
卡尔曼估计实际由两个过程组成:预测与校正,在预测阶段,滤波器使用上一状态的估计,做出对当前状态的预测。在校正阶段,滤波器利用对当前状态的观测值修正在预测阶段获得的预测值,以获得一个更接进真实值的新估计值。
1、变量说明
:真实值
:卡尔曼估计值
:卡尔曼估计误差协方差矩阵
:预测值
:预测误差协方差矩阵
:卡尔曼增益
:测量余量
2、卡尔曼滤波器计算过程
预测:
校正:
更新协方差估计:
观察以上六个式子,我们使用过程中关键要明白,的算法原理,及的更新算法
3、卡尔曼滤波算法详细推导
从协方差矩阵开始说起,真实值与预测值之间的误差为
预测误差协方差矩阵为
真实值与估计值之间的误差为
卡尔曼估计误差协方差矩阵为
将代入得到
其中 ,并将预测误差协方差矩阵代入,得到
卡尔曼滤波本质是最小均方差估计,而均方差是的迹,将上式展开并求迹
最优估计使最小,所以上式两边对求导
套用第一节中提到的那两个矩阵微分公式,得到
令上式等于0,得到
到此,我们就知道了卡尔曼增益是怎么算出来的了,但是又有问题,是怎么算的呢?
(注意其中展开过程用到了)
所以预测误差协方差矩阵可以由上一次算出的估计误差协方差矩阵及状态转移矩阵和过程激励噪声的协方差矩阵算得
4、总结
总结卡尔曼滤波的更新过程为
1步,首先,已知,然后由算出,再由算出,有了这些参数后,结合观测值就能估计出,再利用更新
2步,然后下次更新过程为由算出,再由算出,有了这些参数后,结合观测值就能估计出,再利用更新
……
n步,由算出,再由算出,有了这些参数后,结合观测值就能估计出,再利用更新
这就是卡尔曼滤波器递推过程。
至于的算法,
将代入上式右边最后一项中 ,保持原样
(转载请声明出处 谢谢合作)
reference:
1、https://zh.wikipedia.org/wiki/%E5%8D%A1%E5%B0%94%E6%9B%BC%E6%BB%A4%E6%B3%A2
2、《矩阵分析与应用》 张贤达 著
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/130648.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...