一、問題
狀態變數和證據變數都是連續型的時候
比如說跟蹤乙隻飛行的小鳥
它的狀態用這六個變數來描述
就是x y z的座標 以及x y z方向的速度
都是連續變數
用卡爾曼濾波來處理連續變數
二、用高斯分布來模擬它的先驗概率密度
(卡爾曼濾波假設狀態的先驗分布是高斯分布)
用線性高斯分布來模擬它的轉換模型和感測器模型
可以得出任何時候的狀態分布都是乙個高斯分布
t時刻的狀態分布:用均值為μt
協方差為σt的乙個高斯分布來表示
三、**步驟
根據1~t時刻的證據去**t+1時刻的狀態分布
把σ變成了乙個積分號,把t時刻的所有狀態可能乘以轉換模型
(拆分成t+1時刻的證據和1~t時刻的證據再利用乙個貝葉斯公式)
更新運算結果就是 新來的乙個t+1時刻的證據
來估計t+1時刻的狀態
相當於對狀態進行了更新
四、一維例項
先驗分布 乙個一維高斯分布它的均值是μ0 方差是σ0平方
轉移模型 乙個線性高斯分布它的均值是xt方差是σx平方
觀察模型 乙個高斯分布它的均值是xt 方差是σz平方
2.根據零時刻的狀態分布以及轉移模型,
可以對1時刻的狀態分布進行**:
解釋:零時刻的狀態分布乘以這個轉移模型
再對零時刻的狀態進行積分
再把兩個分布代進來
3.濾波
得到1時刻的證據z1之後
對1時刻的狀態分布進行更新(就是濾波)
對1時刻狀態的更新也是乙個高斯分布
1時刻的均值μ1
1時刻的方差σ1
卡爾曼濾波器
協方差 用於表示兩個變數的總體誤差,如果兩個變化趨勢一致則協方差為正值,變化趨勢不一致則為負值。從直觀上來看,協方差表示的是兩個變數總體誤差的期望。由k 1時刻的最優值和系統輸入計算k時刻的系統 值。根據k 1時刻的系統協方差 k時刻系統協方差。根據 k時刻 協方差矩陣的 值計算卡爾曼增益。根據狀態...
Python 卡爾曼濾波器實現
去年我們在設計一款新產品的時候,由於選用定製開發的乙個soc器件,導致我們在用adc讀取經由這個soc晶元放大後的訊號時,出現了極其不穩定的情況。正常情況下adc讀取出來的訊號應當為一條平穩的直線,而現實上讀取出來的訊號確上下波動極其大,遠遠超出了我們理論計算水平。雖然後來通過大量的研究分析,得出時...
卡爾曼濾波器 Python Numpy基本函式
import numpy as np 匯入numpy庫 defone tenth x 將輸入轉化成矩陣,dtype指定陣列的資料型別 x np.asarray x,dtype np.float32 return x 10 x np.array 1,2 申請一浮點矩陣 3,4 dtype float ...