1. 程式人生 > >卡爾曼濾波演算法原理

卡爾曼濾波演算法原理

# -*- coding=utf-8 -*-
# Kalman filter example demo in Python

# A Python implementation of the example given in pages 11-15 of "An
# Introduction to the Kalman Filter" by Greg Welch and Gary Bishop,
# University of North Carolina at Chapel Hill, Department of Computer
# Science, TR 95-041,
# http://www.cs.unc.edu/~welch/kalman/kalmanIntro.html

# by Andrew D. Straw
#coding:utf-8
import numpy
import pylab

#這裡是假設A=1,H=1的情況

# 引數初始化
n_iter = 50
sz = (n_iter,) # size of array
x = -0.37727 # truth value (typo in example at top of p. 13 calls this z)真實值
z = numpy.random.normal(x,0.1,size=sz) # observations (normal about x, sigma=0.1)觀測值

Q = 1e-5 # process variance

# 分配陣列空間
xhat=numpy.zeros(sz)      # a posteri estimate of x 濾波估計值
P=numpy.zeros(sz)         # a posteri error estimate濾波估計協方差矩陣
xhatminus=numpy.zeros(sz) # a priori estimate of x 估計值
Pminus=numpy.zeros(sz)    # a priori error estimate估計協方差矩陣
K=numpy.zeros(sz)         # gain or blending factor卡爾曼增益

R = 0.1**2 # estimate of measurement variance, change to see effect

# intial guesses
xhat[0] = 0.0
P[0] = 1.0

for k in range(1,n_iter):
    # 預測
    xhatminus[k] = xhat[k-1]  #X(k|k-1) = AX(k-1|k-1) + BU(k) + W(k),A=1,BU(k) = 0
    Pminus[k] = P[k-1]+Q      #P(k|k-1) = AP(k-1|k-1)A' + Q(k) ,A=1

    # 更新
    K[k] = Pminus[k]/( Pminus[k]+R ) #Kg(k)=P(k|k-1)H'/[HP(k|k-1)H' + R],H=1
    xhat[k] = xhatminus[k]+K[k]*(z[k]-xhatminus[k]) #X(k|k) = X(k|k-1) + Kg(k)[Z(k) - HX(k|k-1)], H=1
    P[k] = (1-K[k])*Pminus[k] #P(k|k) = (1 - Kg(k)H)P(k|k-1), H=1

pylab.figure()
pylab.plot(z,'k+',label='noisy measurements')     #觀測值
pylab.plot(xhat,'b-',label='a posteri estimate')  #濾波估計值
pylab.axhline(x,color='g',label='truth value')    #真實值
pylab.legend()
pylab.xlabel('Iteration')
pylab.ylabel('Voltage')

pylab.figure()
valid_iter = range(1,n_iter) # Pminus not valid at step 0
pylab.plot(valid_iter,Pminus[valid_iter],label='a priori error estimate')
pylab.xlabel('Iteration')
pylab.ylabel('$(Voltage)^2$')
pylab.setp(pylab.gca(),'ylim',[0,.01])
pylab.show()



執行結果

相關推薦

濾波演算法原理

# -*- coding=utf-8 -*- # Kalman filter example demo in Python # A Python implementation of the example given in pages 11-15 of "An # Introduction to the

濾波原理說明

收集 引入 濾波 div 概率 一個人 pdf span net 在學習卡爾曼濾波器之前,首先看看為什麽叫“卡爾曼”。跟其他著名的理論(例如傅立葉變換,泰勒級數等等)一樣,卡爾曼也是一個人的名字,而跟他們不同的是,他是個現代人!卡爾曼全名Ru

濾波基本原理及公式推導

一、卡爾曼濾波基本原理 既然是濾波,那肯定就是一種提純資料的東西。怎麼理解呢,如果現在有一個任務,需要知道家裡橘子樹今年長了多少個橘子。你想到去年、前年、大前年這三年你把橘子吃到過年,按每天吃3個來算,大概知道每年橘子樹產了多少橘子,今年的情況應該也差不多。這叫數學模型預測法;不過你懶得去想去年

十分鐘讀懂『濾波演算法

我是勤勞的搬運工,轉自: 1.http://blog.csdn.net/karen99/article/details/7771743 2.http://blog.csdn.net/tudouniurou/article/details/6277512 --------

基於濾波演算法在三維球軌跡中跟蹤應用

關於卡爾曼濾波跟蹤演算法的理解文章實在太多,絕大多數都在敘述演算法原理和一些理解,而且一般舉例都限於一維直線運動或者二維平面運動,故在此不做過多的重複表述,有關原理理解性的文章請參考本部落格後的refe

Kalman filter濾波原理說明

在學習卡爾曼濾波器之前,首先看看為什麼叫“卡爾曼”。跟其他著名的理論(例如傅立葉變換,泰勒級數等等)一樣,卡爾曼也是一個人的名字,而跟他們不同的是,他是個現代人! 卡爾曼全名Rudolf Emil Kalman,匈牙利數學家,1930年出生於匈牙利首都布達佩斯。1953,1954年於麻省理工學院分別獲得電

基於濾波演算法融合影象速度資料和加速度計資料

最近在改進之前做的視覺定點演算法,以前只有一個位置環,現在準備再串一級速度環,但是解算出無人機的平移速度還是頗為頭疼的,網上的資料很少,需要我們自己動腦去解決這個問題。 首先要測水平速度,傳統的方法是GPS,我所設計的無人機的應用場景中的GPS訊號雖然有,但是

通俗理解濾波及其演算法實現(帶例項解析)

1.簡介(Brief Introduction) 在學習卡爾曼濾波器之前,首先看看為什麼叫“卡爾曼”。跟其他著名的理論(例如傅立葉變換,泰勒級數等等)一樣,卡爾曼也是一個人的名字,而跟他們不同的是,他是個現代人! 卡爾曼全名Rudolf Emil Kalman,匈牙利數學家,1930年出生於

濾波(Kalman Filter)原理與公式推導

公式推導 領域 公式 不一定 技術 精度 原理 應用 定性 一、背景---卡爾曼濾波的意義 隨著傳感技術、機器人、自動駕駛以及航空航天等技術的不斷發展,對控制系統的精度及穩定性的要求也越來越高。卡爾曼濾波作為一種狀態最優估計的方法,其應用也越來越普遍,如在無人機、機器人等領

濾波演算法濾波

這兩天學習了一些卡爾曼濾波演算法的相關知識。相比其它的濾波演算法,卡爾曼濾波在對計算量需求非常之低,同時又能達到相當不錯的濾波結果。 1. 演算法原理 網上看到一篇文章http://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/對

濾波原理及應用(一)

出於科研需要,打算開始學習卡爾曼濾波(Kalmam Filter)。很早之前就聽說過卡爾曼濾波,但一直沒能深入學習,這次終於有機會了,哈哈。 1.卡爾曼濾波的發展過程 卡爾曼濾波的本質屬於"估計"範疇.先介紹下估計,所謂“估計”問題,就是對收到隨機干擾和隨機測量誤差作用的物理系統,按照某種效

濾波原理介紹(轉載)

原文連結為:https://blog.csdn.net/heyijia0327/article/details/17487467 這是我看到的寫的比較好的卡爾曼濾波的介紹。 卡爾曼濾波(Kalman filter)是一種高效率的遞迴濾波器(自迴歸濾波器),它能夠從一系列的不完全及包含噪聲的測量中

濾波原理(二):擴充套件

1、理論部分       上一篇介紹了線性卡爾曼濾波器,當系統為線性高斯模型時,濾波器能給出最優的估計,但是實際系統總是存在不同程度的非線性,如平方、三角關係、開方等。對於非線性系統,可以採用的一種方法是通過線性化方法將非線性系統轉換為近似的線性系統,即為EKF

濾波原理及實現

版權宣告:本文為博主原創文章,未經博主允許不得轉載。    https://blog.csdn.net/lybaihu/article/details/54943545 卡爾曼濾波原理及實現 前一段時間,做專案研究了一下卡爾曼濾波,並且在專案當中實現了一個物體跟蹤的

濾波原理及工具箱應用

在學習卡爾曼濾波器之前,首先看看為什麼叫“卡爾曼”。跟其他著名的理論(例如傅立葉變換,泰勒級數等等)一樣,卡爾曼也是一個人的名字,而跟他們不同的是,他是個現代人!卡爾曼全名Rudolf Emil Kalman,匈牙利數學家,1930年出生於匈牙利首都布達佩斯。1953,1954年於麻省理工學院分別獲

[轉]通俗理解濾波及其演算法實現(例項解析)

1.簡介(Brief Introduction)在學習卡爾曼濾波器之前,首先看看為什麼叫“卡爾曼”。跟其他著名的理論(例如傅立葉變換,泰勒級數等等)一樣,卡爾曼也是一個人的名字,而跟他們不同的是,他是個現代人!卡爾曼全名Rudolf Emil Kalman,匈牙利數學家,19

濾波(Kalman Filter)原理理解和測試

Kalman Filter學原理學習 1. Kalman Filter 歷史 Kalman濾波器的歷史,最早要追溯到17世紀,Roger Cotes開始研究最小均方問題。但由於缺少實際案例的支撐(那個時候哪來那麼多雷達啊啥的這些訊號啊),Cotes

濾波經典講解,C++演算法實現】

http://blog.csdn.net/u013291818/article/details/53178112 在學習卡爾曼濾波器之前,首先看看為什麼叫“卡爾曼”。跟其他著名的理論(例如傅立葉變換,泰勒級數等等)一樣,卡爾曼也是一個人的名字,而跟他們不同的是,他是個現

通俗理解濾波及其演算法實現(例項解析)

1.簡介(Brief Introduction)在學習卡爾曼濾波器之前,首先看看為什麼叫“卡爾曼”。跟其他著名的理論(例如傅立葉變換,泰勒級數等等)一樣,卡爾曼也是一個人的名字,而跟他們不同的是,他是個現代人!卡爾曼全名Rudolf Emil Kalman,匈牙利數學家,19

一個應用例項詳解濾波及其演算法實現

為了可以更加容易的理解卡爾曼濾波器,這裡會應用形象的描述方法來講解,而不是像大多數參考書那樣羅列一大堆的數學公式和數學符號。但是,他的5條公式是其核心內容。結合現代的計算機,其實卡爾曼的程式相當的簡單,只要你理解了他的那5條公式。在介紹他的5條公式之前,先讓我們來根據下面的例子一步一步的探索。假設我們要研究的