三个最简单公式讲完卡尔曼滤波算法
概述
首先明確一下卡爾曼濾波的基本概念:可參考知乎諸位大神的“如何通俗易懂地描述卡爾曼濾波“,這里我也稍微說明一下。
所謂卡爾曼濾波就是當你在測量一個值時,同時擁有模型估計和直接測量兩種方式,但是兩種方式都不太準確,于是就可以用卡爾曼增益系數來分配兩種方式的可信度權重,以得出新的估計值,并以新估計值為基礎,更新卡爾曼增益系數重新分配權重,逐步逼近真實值。卡爾曼增益系數卻決于兩種方式的方差,哪個更靠譜就更相信哪個。
以下三個公式用倒推的方法說明如何實現卡爾曼濾波。
公式一:用上一步的估計值更準確地求這一步的估計值
X[i+1]=(1-K[i+1])x[i]+K[i+1]*z[i+1]
x即估計值,z即測量值。
可以看出,這次的估計值是由上次的估計值和這次的測量值共同決定的,這兩者所占權重由K決定,K就是我們說的卡爾曼增益系數。
公式二:卡爾曼增益系數怎么來
K[i+1]=(P[i]+Q)/(P[i]+Q+R)
P是上一次估計值的方差,Q是高斯噪聲的方差,R是測量值的方差,Q和R都是常數。
可以看出,K是由兩類方差的比值決定的,因為Q,R都是常數,所以上一次估計值的方差起決定性作用,如果上一次估計完以后發現方差很大,說明估計的不太靠譜,在這個式子中易知K會隨之變大更接近1,這樣的話結合上一個公式,測量值所占比值就會更大,也就是說這一次的估計值更信任測量值。
公式三:估計值的方差怎么來
P[i+1]=(1-K[i+1])P[i]
這一次的方差由上一次的方差和這次的增益系數決定
總結
只要滿足卡爾曼濾波使用條件(各種狀態符合正態分布),給出第一個估計值,第一個估計方差,高斯噪聲方差,測量值方差,將這三個公式放進一個迭代循環里,估計值x就能一步一步逼近真實值。
代碼
附一個C語言實現卡爾曼濾波的簡單例子的代碼。
代碼是http://blog.csdn.net/sinat_20265495/article/details/51006311這篇博客提供的,自己按理解添加了很多注釋。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
總結
以上是生活随笔為你收集整理的三个最简单公式讲完卡尔曼滤波算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个Lex/Yacc完整的示例(可使用C
- 下一篇: 非常值得一看—九种滤波算法C语言实现