0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

濾波算法:經典卡爾曼濾波

射頻問問 ? 來源:射頻問問 ? 2023-02-16 09:47 ? 次閱讀

卡爾曼濾波實質上就是基于觀測值以及估計值二者的數據對真實值進行估計的過程。預測步驟如圖1所示:

44a3dd00-ad20-11ed-bfe3-dac502259ad0.png

圖1 卡爾曼濾波原理流程圖

假設我們能夠得到被測物體的位置和速度的測量值44be82cc-ad20-11ed-bfe3-dac502259ad0.png,在已知上一時刻的最優(yōu)估計值44da2d24-ad20-11ed-bfe3-dac502259ad0.png以及它的協方差矩陣44f0586a-ad20-11ed-bfe3-dac502259ad0.png的條件下(初始值可以隨意取,但協方差矩陣應為非0矩陣),則有450a72ae-ad20-11ed-bfe3-dac502259ad0.png,45218c82-ad20-11ed-bfe3-dac502259ad0.png,即:

45344340-ad20-11ed-bfe3-dac502259ad0.png? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(1)

而此時,

4547ae62-ad20-11ed-bfe3-dac502259ad0.png? ? ? ? ? ? ? ? ? ?(2)

如果我們加入額外的控制量,比如加速度45587dbe-ad20-11ed-bfe3-dac502259ad0.png,此時456f21b8-ad20-11ed-bfe3-dac502259ad0.png,45877a24-ad20-11ed-bfe3-dac502259ad0.png,則此時:

45999448-ad20-11ed-bfe3-dac502259ad0.png? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??(3)

同時,我們認為我們對系統的估計值并非完全準確,比如運動物體會突然打滑之類的,即存在一個協方差為45aabd5e-ad20-11ed-bfe3-dac502259ad0.png的噪聲干擾。因此,我們需要對45c057f4-ad20-11ed-bfe3-dac502259ad0.png加上系統噪聲45daf60e-ad20-11ed-bfe3-dac502259ad0.png來保證描述的完備性。綜上,預測步驟的表達如下所示:

45f3c21a-ad20-11ed-bfe3-dac502259ad0.png? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??(4)

460b17da-ad20-11ed-bfe3-dac502259ad0.png? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???(5)

由于誤差累積的作用,單純對系統進行估計會導致估計值越來越離譜,因此我們以傳感器的觀測數據對我們的估計進行修正。我們可以用與預測步驟類似的方法將估計值空間映射至觀測值空間,如下式所示:

461b68a6-ad20-11ed-bfe3-dac502259ad0.png? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??(6)

462f7e40-ad20-11ed-bfe3-dac502259ad0.png? ? ? ? ? ? ? ? ? ? (7)

我們假設觀測值為463f25ca-ad20-11ed-bfe3-dac502259ad0.png。同時由于觀測數據同樣會存在噪聲干擾問題,比如傳感器噪聲等,我們將這種噪聲的分布用協方差465bb316-ad20-11ed-bfe3-dac502259ad0.png表示。此時,觀測值4677e158-ad20-11ed-bfe3-dac502259ad0.png與估計值4691246a-ad20-11ed-bfe3-dac502259ad0.png處于相同的狀態(tài)空間,但具有不同的概率分布,如圖2所示:

46acde26-ad20-11ed-bfe3-dac502259ad0.jpg

圖2 估計值與觀測值概率分布示意圖

我們可以認為,這兩個概率分布的重疊部分,會更加趨近系統的真實數據,即有更高的置信度,比如我們估計汽車速度是5~10km/h,傳感器反饋的速度是8~12km/h,那我們有理由認為汽車的實際速度更趨近于8~10km/h這個區(qū)間。

這里將觀測值與估計值兩個分布的高斯分布相乘,其結果的高斯分布描述如下:

46c82866-ad20-11ed-bfe3-dac502259ad0.png? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??(8)

46db5b48-ad20-11ed-bfe3-dac502259ad0.png? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??(9)

46f545e4-ad20-11ed-bfe3-dac502259ad0.png? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??(10)

式中:470f2716-ad20-11ed-bfe3-dac502259ad0.png描述高斯分布的協方差,47280970-ad20-11ed-bfe3-dac502259ad0.png表示高斯分布的均值,矩陣473e298a-ad20-11ed-bfe3-dac502259ad0.png稱為卡爾曼增益矩陣。

那么,將估計值47551b9a-ad20-11ed-bfe3-dac502259ad0.png以及觀測值4771af8a-ad20-11ed-bfe3-dac502259ad0.png代入式(8)至式(10),可以得到:

47820592-ad20-11ed-bfe3-dac502259ad0.png? ? ? ? ? ? ? ?(11)

47960466-ad20-11ed-bfe3-dac502259ad0.png? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??(12)

47b32802-ad20-11ed-bfe3-dac502259ad0.png? ? ? ? ? ? ? ?(13)

式中,473e298a-ad20-11ed-bfe3-dac502259ad0.png稱為卡爾曼增益。

將式(11)至式(13)中約去47dbe3d2-ad20-11ed-bfe3-dac502259ad0.png,并化簡可得:

47f2d93e-ad20-11ed-bfe3-dac502259ad0.png? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???(14)

480bb8c8-ad20-11ed-bfe3-dac502259ad0.png? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???(15)

482382e6-ad20-11ed-bfe3-dac502259ad0.png? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??(16)

484967fe-ad20-11ed-bfe3-dac502259ad0.png即為我們所得到的最優(yōu)估計值,同時485aa46a-ad20-11ed-bfe3-dac502259ad0.png為其對應的協方差矩陣。在實際應用中,只需要使用式(4)、式(5)以及式(14)至式(16)這5個方程即可實現完整的卡爾曼濾波過程。

在對單一信號源濾波的場合,由于測量值與估計值具備幾乎完全相同的概率分布,為了更好的實現去噪效果,在假定被測對象變化不顯著的情況下,可以將之前(1~N)個時間節(jié)點的測量值隨機作為當前時間節(jié)點的測量值,以實現更好的去噪效果。原則上,N取值越大濾波效果越好,但也會導致濾波結果滯后越嚴重。

2. 算法實現

function output = kalmanFilter(data, Q, R, N)
 
if ~exist('Q', 'var')
    Q = 0.01;
end
if ~exist('R', 'var')
    R = 1;
end
if ~exist('N', 'var')
    N = 0;
end
 
X = 0;
P = 1;
A = 1;
H = 1;
 
output = zeros(size(data));
 
for ii = N + 1 : length(data)
   X_k = A * X;
   P_k = A * P * A' + Q;
   Kg = P_k * H' / (H * P_k * H' + R);
   z_k = data(ii - round(rand() * N));
   X = X_k + Kg * (z_k - H * X_k);
   P = (1 - Kg*H) * P_k;
   output(ii) = X;
end
 
end

3. 算法分析

采用經典卡爾曼濾波對虛擬信號及真實信號進行濾波,結果如下圖所示:

4897daba-ad20-11ed-bfe3-dac502259ad0.jpg

圖3 經典卡爾曼濾波對虛擬信號濾波結果

48c146d4-ad20-11ed-bfe3-dac502259ad0.jpg

圖4 經典卡爾曼濾波對真實信號濾波結果

從濾波結果中可以看出,經典卡爾曼對信號的濾波效果較為優(yōu)秀,實時性相對較好,計算量需求極小,能夠有效去除高斯噪聲以及非高斯噪聲,基本不受脈沖信號影響。在對被測系統的建模較為精確的條件下,其性能還能夠進一步提升。其缺點主要在于需人為給定系統模型,當系統模型不精確時濾波效果會有所下降,但可以通過增加采樣頻率解決此問題。

建議應用場合:輸入信號相對平穩(wěn)或已知被測系統運動學模型,同時要求運算量極小的場合。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 濾波
    +關注

    關注

    10

    文章

    667

    瀏覽量

    56647
  • 算法
    +關注

    關注

    23

    文章

    4612

    瀏覽量

    92900
  • 卡爾曼濾波
    +關注

    關注

    3

    文章

    165

    瀏覽量

    24650
  • 濾波算法
    +關注

    關注

    2

    文章

    89

    瀏覽量

    13727
  • 輸入信號
    +關注

    關注

    0

    文章

    458

    瀏覽量

    12565

原文標題:濾波算法:經典卡爾曼濾波

文章出處:【微信號:射頻問問,微信公眾號:射頻問問】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    卡爾濾波

    卡爾濾波的估計值能很好的逼近真實值,我的疑惑是,這和濾波有什么關系,請高手介紹下卡爾
    發(fā)表于 07-04 22:57

    圖書分享:卡爾濾波算法的幾何解釋

    網上搜到一篇關于卡爾濾波算法的論文,對低維卡爾濾波
    發(fā)表于 06-11 15:28

    卡爾濾波算法

    已知測量值和原始值,但測量噪聲和觀測噪聲未知,如何進行卡爾濾波。之前看了好像可以用自適應卡爾,但不是很懂,求例子,最好有注釋的
    發(fā)表于 03-23 19:12

    LabVIEW一維卡爾濾波算法

    最近正在學習卡爾濾波算法,用LabVIEW仿照C語言寫了個一維的卡爾
    發(fā)表于 10-21 21:15

    卡爾濾波簡介

    希望這篇筆記可以幫助到你。卡爾濾波(Kalman filtering)是一種利用線性系統狀態(tài)方程,通過系統輸入輸出觀測數據,對系統狀態(tài)進行最優(yōu)估計的算法。
    發(fā)表于 02-28 14:24

    卡爾濾波算法對比其他的濾波算法有什么優(yōu)點?

    卡爾濾波算法對比其他的濾波算法有什么優(yōu)點
    發(fā)表于 10-11 06:42

    卡爾濾波算法的改進方案

    卡爾濾波 算法具有收斂平穩(wěn)、速度快、精度高的優(yōu)點,在信號處理中受到廣泛應用。但由于卡爾
    發(fā)表于 06-14 16:36 ?0次下載
    <b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b><b class='flag-5'>算法</b>的改進方案

    卡爾濾波學習及應用

    卡爾濾波的學習與應用。
    發(fā)表于 04-13 15:15 ?7次下載

    卡爾濾波算法

    卡爾濾波算法
    發(fā)表于 12-17 17:22 ?52次下載

    一種基于增量式卡爾濾波器的PMSM轉速濾波算法_肖曦

    一種基于增量式卡爾濾波器的PMSM轉速濾波算法_肖曦
    發(fā)表于 01-08 11:28 ?5次下載

    擴展卡爾濾波的原理

    在很多實際工程問題當中,非線性系統占大多數,而卡爾提出來的卡爾濾波器是一種針對線性系統的估計算法
    的頭像 發(fā)表于 08-12 10:06 ?5666次閱讀
    擴展<b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b>的原理

    淺析卡爾濾波

    在 飛行器姿態(tài)計算 中,卡爾濾波是最常用的姿態(tài)計算方法之一。今天就以目前的理解講以下卡爾濾波
    的頭像 發(fā)表于 06-14 10:44 ?2061次閱讀

    MPU6050使用互補濾波卡爾濾波算法進行姿態(tài)解算

    MPU6050使用互補濾波卡爾濾波算法進行姿態(tài)解算
    發(fā)表于 08-07 15:46 ?10次下載

    什么是卡爾濾波?卡爾濾波的作用是什么

    一、什么是卡爾濾波? 你可以在任何含有不確定信息的動態(tài)系統中使用卡爾濾波,對系統下一步的走向
    的頭像 發(fā)表于 08-08 09:39 ?7002次閱讀
    什么是<b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b>?<b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b>的作用是什么

    卡爾濾波算法c語言實現方法

    卡爾濾波(Kalman Filter)是一種用于估計狀態(tài)的算法,最初由R.E. Kalman在1960年提出。它是一種線性高斯濾波器,常用
    的頭像 發(fā)表于 01-17 10:51 ?2991次閱讀