卡爾曼濾波器 連續變數

2022-08-25 11:03:23 字數 1371 閱讀 8077

一、問題

狀態變數和證據變數都是連續型的時候

比如說跟蹤乙隻飛行的小鳥

它的狀態用這六個變數來描述

就是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 ...