卡尔曼滤波(Kalman Filter) 的进一步讨论


我们在上一篇文章中通过一个简单的样例算是入门卡尔曼滤波了。本文将以此为基础讨论一些技术细节。

卡尔曼滤波(Kalman Filter)

http://blog.csdn.net/baimafujinji/article/details/50646814


在上一篇文章中。我们已经对HMM和卡尔曼滤波的关联性进行了初步的讨论。參考文献【3】中将二者之间的关系归结为下表。


上表是什么意思呢?我们事实上能够以下的式子来表示,当中,w 和 v 分别表示状态转移 和 測量 过程中的不确定性,也即是噪声,既然是噪声就能够假设它们服从一个零均值的高斯分布。这事实上跟我们在上一篇文章中所给出的形式是一致的。也就是说我们觉得过去的状态假设是 xt-1。那么当前状态xt应该是 xt-1的一个线性变换。而这个预计过程事实上是有误差的,用一个零均值的高斯噪声(概率分布)来表达。

相似地,当前的測量值yt应该是真实值 xt 的一个线性变换。而这个測量过程仍然是有误差的,也用一个零均值的高斯噪声概率分布)来表达。


      (1)


上一节中我们还讲过,在 [t0, t1] 时间段内的測量为Y,对应的预计为,则t = t1 时, 称为X(t)的预计(或者称为滤波)。当然如今我们也只须要将注意力放在滤波上。所以终于要求的应该是以下这个式子


依据条件概率的链式法则以及马尔科夫链的无记忆性,再去掉常值系数的情况下,就能够得到以下的结论(假设你对有关数学公式记得不是非常清楚能够參考http://blog.csdn.net/baimafujinji/article/details/50441927)


当中,P( xt | y1, … , yt-1)就是Prediction(预測),由于它表示的意义是已知从1到t-1时刻的观測值y1, … , yt-1的情况下求 t 时刻的状态值xt

还有一方面,P( xt | y1, … , yt)就是Update,由于它表示当我们已经获得yt时。再对xt 进行的一个更新(或修正)。


依据马尔科夫链的无记忆性,可知P( yt | xt, y1, … , yt-1) = P( yt | xt) 。

就预測部分而言。我们希望引入xt-1。所以能够採用以下的方法(这事实上就是我们在处理普通贝叶斯网络时所用过的方法)

到此为止。事实上你应该能够看出来卡尔曼滤波就形成了一个递归求解的过程。也就是说。我们欲求P( xt | y1, … , yt-1),就须要先求P( xt-1 | y1, … , yt-1),而欲求P( xt-1 | y1, … , yt-1),就要先求P( xt-2 | y1, … , yt-1)…结合上一篇文章介绍的内容,事实上能够总结卡尔曼滤波的步骤例如以下

也就是说当t = 1时。我们依据观測值y1去预计真实状态x1,这个过程服从一个高斯分布。

然后。当t = 2时,我们依据上一个观測值y1去预測当前的真实状态x2,在获得该时刻的真实观測值y2后,我们又能够预计出一个新的真实状态x2。这时就要据此对由y1预測的结果进行修正(Update),如此往复。


接下来,我们引入一个服从零均值高斯分布的(噪声)变量 Δxt-1

然后试着将ΔxtΔytΔxt-1的形式来给出,并且处于方便的考虑。我们忽略掉公式(1)中的控制项 BC。于是有

依据独立性假设,还可知例如以下结论(这些都是兴许计算推导过程中所须要的准备):



以下我们要做的事情就是推导卡尔曼滤波的五个公式,在上一篇文章中,我们很多其它地是从感性的角度给出了这些公式。并没有给出具体的数学推导,接下来我们就要来完毕这项任务。


综上我们已经完整地给出了卡尔曼滤波的理论推导。

对于结论性的东西。你当然能够直接拿来使用。

在一些软件包中,卡尔曼滤波无非是一条命令或者一个函数就能搞定。

我们之所以还在这里给出它的具体推导,主要是鉴于这样的思想事实上在机器学习中也被广泛地用到,所以了解这些技术细节仍然十分有意义。


===================================================================================================

假设你是图像处理的同道中人欢迎增加图像处理算法交流群(单击链接查看群号)


參考文献:

【1】Stuart Russell and Peter Norvig. Artificial Intelligence: A Modern Approach. 3rd Edition.

【2】秦永元,张洪钺,汪叔华,卡尔曼滤波与组合导航原理,西北工业大学出版社

【3】徐亦达博士关于卡尔曼滤波的公开课,http://v.youku.com/v_show/id_XMTM2ODU1MzMzMg.html

【4】卡尔曼滤波的原理以及在MATLAB中的实现,http://blog.csdn.net/revolver/article/details/37830675


转载于:https://www.cnblogs.com/lxjshuju/p/7095292.html

卡尔曼滤波是一种用来估计系统状态的递归滤波算法,适用于线性系统且满足高斯分布的噪声。该滤波器是由R. E. Kalman提出的。 卡尔曼滤波的原理是基于两个假设:系统动态方程能由线性方程描述,测量方程能由线性方程描述。在每个时间步,卡尔曼滤波器通过两个步骤进行估计和更新:预测步骤和校正步骤。预测步骤是根据系统动态方程和上一个时间步的估计状态预测当前状态的均值和方差。校正步骤是根据测量方程和当前观测得到的测量值以及预测的状态,利用贝叶斯定理更新状态的均值和方差,得到最终的估计值。 推导卡尔曼滤波算法的公式如下: 预测步骤: 预测状态: $ x^- = A \cdot x + B \cdot u $ 预测状态协方差矩阵: $ P^- = A \cdot P \cdot A^T + Q $ 校正步骤: 卡尔曼增益: $ K = P^- \cdot H^T \cdot (H \cdot P^- \cdot H^T + R)^{-1} $ 修正后的状态: $ x = x^- + K \cdot (z - H \cdot x^-) $ 修正后的状态协方差矩阵: $ P = (I - K \cdot H) \cdot P^- $ 其中,x是系统状态向量,A是状态转移矩阵,B是输入矩阵,u是输入向量,P是后验状态的误差协方差矩阵,Q是预测误差协方差矩阵,H是测量矩阵,R是测量误差的协方差矩阵,z是观测向量。 通过上述公式的迭代,卡尔曼滤波器可以递归地估计系统的状态,并通过校正步骤利用最新的观测值来更新估计值。这种算法在估计方差较大的实时系统中具有优势,可以去除噪声和不确定性,提高系统的估计精度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值