當前位置:首頁 » 操作系統 » 實時濾波演算法

實時濾波演算法

發布時間: 2022-12-28 01:59:29

① 卡爾曼濾波理解與實現

本文為離散卡爾曼濾波演算法的一 一個簡明教程,從演算法思想、實現過程、理論推導和程序實現四個方面闡述和分析了卡爾曼濾波演算法。

XU Ruilin完成本教程主要部分的編寫,WANG Xuejun完成第3節的編寫,ZHU Ximin完成2.2節的編寫,WEN Shuhan完成2.3節的編寫,MAO Bo完成全文整理、修訂和排版。

卡爾曼濾波(Kalman Filtering)及其一系列的優化和改進演算法是目前在求解運動狀態推算問題上最為普遍和高效的方法。 魯道夫·卡爾曼 (Rudolf Emil Kalman) 在NASA埃姆斯研究中心訪問時,發現他的方法適用於解決阿波羅計劃的軌跡預測問題。阿波羅飛船的導航電腦就是使用這種濾波器進行軌跡預測。

卡爾曼濾波尤其適用於動態系統,這種方法對於內存要求極低而運算速度快,且能夠保持較好的計算精度,這使得這種方法非常適合解決實時問題和應用於嵌入式系統,也就是說,卡爾曼濾波天然的適用於解決艦艇指控系統的航跡推算問題。在接下來的內容里,我們將逐步領會卡爾曼濾波的這些絕佳特點。

不過,現在我們先從復雜的艦艇航跡推算問題中解脫出來,從一個更加熟悉和簡單的問題中來理解這個濾波演算法的思想、過程和演算法。

假設有一輛無人車WALL-E,需要導引它從A點到達B點,共有兩種手段( 圖1 ):

顯然,兩種方法都有一定的誤差。如果單獨採用某一種方法進行定位,WALL-E在誤差的影響下將無法到達B點。因此,需要將兩種方法結合起來,得到一個更加精確的結果,這就是卡爾曼濾波要解決的問題。

卡爾曼濾波方法如何看待我們的問題呢?在探究這個問題之前,我們先對問題進行抽象,並用數學語言來描述我們的問題。

我們用矢量 來描述WALL-E的運動狀態,這個列矢量 包括位置矢量 和速度矢量 兩個分量。在WALL-E的問題上,我們現在不知道位置 和速度 的准確值,但是知道WALL-E的運動模型滿足 狀態方程 ,定位的方法,也即觀測WALL-E運動狀態的方法滿足 觀測方程 . 當然,我們也知道,這兩種方法都存在一定的誤差 ,那麼我們的問題就可以轉化為一個優化問題——

在這一優化問題中,目標函數是要使預測(估計)誤差最小,同時約束於估計方法 和 的條件下。在卡爾曼濾波中,我們的估計原則(也就是最小化估計誤差的原則)是 最小方差無偏估計 [1] ,我們將通過後面的過程分析來說明這一點。

在我們正式開始引入公式分析卡爾曼濾波問題之前,我們還必須解決一個問題------把連續的線性系統離散化,也就是將連續時域問題轉化為時間序列問題。當然,目前我們只討論線性系統的情況,關於非線性系統問題,我們有擴展卡爾曼濾波(Extended Kalman Filtering, EKF)和無跡卡爾曼濾波(Unscented Kalman Filtering, UKF)兩種方法來求解。

補充內容------連續線性時變系統的離散化
設連續線性時變系統的時域狀態方程為

若采樣周期為 ,則從時刻 到時刻 ,有


令 , ,則離散化的狀態方程為

通過對線性系統的離散化處理,我們現在可以考慮每一個時刻WALL-E的運動狀態。接下來,我們將用 來表示在 時刻運動狀態的最優估計值;用 表示用 時刻對 時刻的狀態預測值;用 表示對 時刻綜合預測和觀測兩種方法的最優估計值。

在估計WALL-E位置的問題上,假定我們已經知道它是勻速直線運動,WALL-E身上還攜帶有一個GPS感測器可以提供它的位置信息,WALL-E在前進過程中可能會遇到一些情況,比如停止前進或是受到風的影響。

加入我們已知的是WALL-E上一個時刻的最佳估計狀態,即k-1時刻的位置和速度,要求的是下一時刻即k時刻的最佳估計狀態,即k時刻的位置和速度,我們可以發現有兩種方法可以得到它的k時刻的狀態:

一種是通過WALL-E設定程序計算得到下一秒的狀態,比如現在設定是勻速直線運動,那麼下一秒的速度應該是恆定不變的,而位置則是在上一秒位置的基礎上加上時間乘以速度即一秒內走過的路程,但是現實生活中並不是理想的,機器人會受到摩擦力、風力等的影響,當然也可能會有頑皮的小孩擋住他前進的道路,這些因素使得WALL-E在k時的真實狀態與我們計算得到的數據有所不同。

另一種是通過WALL-E所攜帶的GPS來確定它的位置,因為GPS是測量出的就是WALL-E的實時狀態,因此它比較准確。但是GPS測量k時刻的狀態有兩個問題,一是GPS只能測出WALL-E的位置,而測不出它的速度;二是GPS感測器測量的時候也會有儀器的誤差,只能說它是比較准確的,比較接近真實值的。

那麼接下來問題來了,我們如何得到k時刻WALL-E的真實狀態呢?

我們將第一種方法得到的狀態值稱為預測值,第二種方法得到的狀態值稱為測量值,對汽車的最佳估計就是將這兩部分信息結合起來,盡量的去逼近k時刻的真實值。

下面再深入一些思考,怎麼將這兩部分結合起來?

在初始時間k-1, 是WALL-E的最佳估計值,WALL-E其實可以是估計值附近的任何位置,並且這種不確定性由該概率密度函數描述。WALL-E最有可能在這個分布的平均值附近。在下一個時間,估計的不確定性增加,用一個更大的方差表示,這是因為在時間步驟k-1和k之間,WALL-E可能收到了風力的影響,或者腳可能向前滑了一點,因此,它可能已經行進了與模型預測的距離不同的距離。

WALL-E位置的另一個信息來源來自測量,方差表示誤差測量的不確定性,真正的位置同樣可以是平均值附近的任何位置。

預測值和測量值,對WALL-E的最佳估計是將這兩部分信息結合起來,將兩個概率函數相乘得到另一個高斯函數,該估計值的方差小於先前估計值,並且該概率密度函數的平均值為我們提供了WALL-E位置的最佳估計。

以下,我們將進行e的運算推導

設:

則有實際目標變數的表達式:

數學模型中目標變數的表達式:

實際模型中測量變數的表達式:

數學模型中測量變數的表達式:

將目標變數的實際值和估計值相減:

將上述方程帶入誤差e的表達式,我們可得出誤差e的解析解:


從推導結果中我們不難看出,估計值和實際值的誤差隨時間呈指數形式變化,當(F-KH)<1時,隨著時間的推移,會無限趨近於零,也就是意味著估計值和實際值相吻合。這就是為什麼卡爾曼濾波器可以完美預測出目標狀態值的原理。

在估計WALL-E位置的問題上,我們不知道位置 和速度 的准確值,但是我們可以給出一個估計區間( 圖5.a )。卡爾曼濾波假設所有的變數是隨機的且符合高斯分布(正態分布)。每個變數有一個均值 和一個方差 ( 圖5.b )。而 圖5.c 則表示速度和位置是相關的。

假如我們已知上一個狀態的位置值,現在要預測下一個狀態的位置值。如果我們的速度值很高,我們移動的距離會遠一點。相反,如果速度慢,WALL-E不會走的很遠。這種關系在跟蹤系統狀態時很重要,它給了我們更多的信息:一個觀測值告訴我們另一個觀測值可能是什麼樣子。這就是卡爾曼濾波的目的------從所有不確定信息中提取有價值的信息。

根據數理統計知識,我們知道這種兩個觀測值(隨機變數)之間的關系可以通過一個協方差矩陣

描述( 圖6 )。

我們假設系統狀態的分布為 高斯分布(正態分布) ,所以在 時刻我們需要兩個信息:最佳預估值 及其協方差矩陣 (如式(2)所示)。

下一步,我們需要通過 時刻的狀態來預測 時刻的狀態。請注意,我們不知道狀態的准確值,但是我們的預測函數並不在乎,它僅僅是對 時刻所有可能值的范圍進行預測轉移,然後得出一個k時刻新值的范圍。在這個過程中,位置 和速度 的變化為

我們可以通過一個狀態轉移矩陣 來描述這個轉換關系

同理,我們更新協方差矩陣 為

到目前為止,我們考慮的都是勻速運動的情況,也就是系統沒有對WALL-E的運動狀態進行控制的情況。那麼,如果系統對WALL-E進行控制,例如發出一些指令啟動或者制動輪子,對這些額外的信息,我們可以通過一個向量 來描述這些信息,並將其添加到我們的預測方程里作為一個修正。假如我們通過發出的指令得到預期的加速度 ,運動狀態方程就更新為

引入矩陣表示為

式中 稱為控制矩陣, 稱為控制向量(例如加速度 )。當然,如果沒有任何外界動力影響的系統,可以忽略這一部分。

我們增加另一個細節,假如我們的預測轉換矩陣不是100%准確呢,會發生什麼?如果狀態只會根據系統自身特性演變,那樣將不會有任何問題。如果所有外界作用力對系統的影響可以被計算得十分准確,那樣也不會有任何問題。但是如果有些外力我們無法預測,例如我們在跟蹤一個四軸飛行器,它會受到風力影響;或者在跟蹤一個輪式機器人,輪子可能會打滑,地面上的突起會使它減速。我們無法跟蹤這些因素,而這些不確定事件發生時,預測方程將會失靈。因此,我們將這些不確定性統一建模,在預測方程中增加一個不確定項。

通過這種方式,使得原始狀態中的每一個點可以都會預測轉換到一個范圍,而不是某個確定的點( 圖7.a )。 可以這樣描述------ 中的每個點移動到一個符合方差 的高斯分布里( 圖7.b )。換言之,我們把這些不確定因素描述為方差為 的高斯雜訊,並用 表示。這樣就會產生一個新的高斯分布,方差不同,但是均值相同( 圖7.c )。

通過對 的疊加擴展,得到完整的預測轉換方程為

新的預測轉換方程只是引入了已知的系統控制因素。新的不確定性可以通過之前的不確定性計算得到。到這里,我們得到了一個模糊的估計范圍------通過 和 描述的范圍。

我們之前的工作仍然是在使用運動模型一種方法來估計系統的狀態,現在,我們要把另一種方法,也就是觀測(本問題中為GPS定位)考慮進來,以進一步修正對運動狀態的估計( 圖8 )。

我們用矩陣 來描述觀測方法的作用,於是有

再加入觀測雜訊 ,觀測方程為

從控制論的角度出發,我們定義新息(也即觀測值與預測值的誤差)為

當然我們也知道,觀測本身也會存在誤差,比如本問題中的GPS定位精度僅有10m. 因此,我們用矩陣 來描述這種不確定性( 圖10 圖11.a )。

這時,我們新息的協方差為

現在我們需要把兩種方法得到的可能性融合起來( 圖11.b )。對於任何狀態,有兩個可能性:1. 感測器的觀測值更接近系統真實狀態;2. 模型推算的估計值更接近系統真實狀態。如果有兩個相互獨立的獲取系統狀態的方式,並且我們想知道兩者都准確的概率值,於是我們可以通過加權來解決更相信誰的問題( 圖11.c )。

我們現在知道,系統模型的狀態預測 與對系統的狀態觀測 服從高斯分布,把這個問題抽象一下就是——

根據我們的一個估計准則------ 最小方差估計 ,那麼這個問題可以轉化為優化問題求解

求導數(差分)得

則 ,從而

當維度高於一維時,我們用矩陣來描述,有

這里的 稱為 卡爾曼增益 (Kalman Gain),也就是我們在解決更信任哪種方法時的偏向程度。

如果我們從兩個獨立的維度估計系統狀態,那麼根據系統模型的預測為

通過感測器的觀測為

我們結合著兩種方法得到

由 可知,卡爾曼增益為

將 約去( 中也含有 項),得

此時的卡爾曼增益實際為

我們最後再來驗證一下 估計的無偏性 ——

這里我們設 時刻的真值為 ,由於

由於 ( 從初值而來的無偏傳遞性 )可知 ,即卡爾曼濾波滿足無偏估計准則。顯然,其中要求系統雜訊和觀測雜訊是不相關、零期望的白雜訊,且是線性系統,初始時刻的狀態估計是無偏的。當這些條件不能滿足時,卡爾曼濾波的估計結果是有偏的。

到這里,我們已經獲得了卡爾曼濾波的全部要素。我們可以把整個過程總結為3個基本假設

假設一 和 都是零均值高斯白雜訊,也即 ,

假設二 與 無關,也即

假設三 系統初值 的均值和方差已知,且 與 均不相關。

以及5個基本方程 方程一 狀態預測

方程二 協方差預測

方程三 卡爾曼增益

② 什麼叫卡爾曼濾波演算法其序貫演算法

卡爾曼濾波演算法(Kalman filtering)一種利用線性系統狀態方程,通過系統輸入輸出觀測數據,對系統狀態進行最優估計的演算法。由於觀測數據中包括系統中的雜訊和干擾的影響,所以最優估計也可看作是濾波過程。
序貫演算法又叫序貫相似性檢測演算法,是指圖像匹配技術是根據已知的圖像模塊(模板圖)在另一幅圖像(搜索圖)中尋找相應或相近模塊的過程,它是計算機視覺和模式識別中的基本手段。已在衛星遙感、空間飛行器的自動導航、機器人視覺、氣象雲圖分析及醫學x射線圖片處理等許多領域中得到了廣泛的應用。研究表明,圖像匹配的速度主要取決於匹配演算法的搜索策略。
數據濾波是去除雜訊還原真實數據的一種數據處理技術, Kalman濾波在測量方差已知的情況下能夠從一系列存在測量雜訊的數據中,估計動態系統的狀態. 由於, 它便於計算機編程實現, 並能夠對現場採集的數據進行實時的更新和處理, Kalman濾波是目前應用最為廣泛的濾波方法, 在通信, 導航, 制導與控制等多領域得到了較好的應用。

③ 擴展卡爾曼濾波(EKF)演算法詳細推導及模擬(Matlab)

姓名:王柯禕

學號:20021110373T

轉自 :https://blog.csdn.net/gangdanerya/article/details/105105611

【嵌牛導讀】介紹擴展卡爾曼濾波(EKF)演算法的詳細推導,局限性和MATLAB模擬。

【嵌牛鼻子】擴展卡爾曼濾波(EKF)

【嵌牛正文】

擴展卡爾曼濾波演算法 是解決非線性狀態估計問題最為直接的一種處理方法,盡管EKF不是最精確的」最優「濾波器,但在過去的幾十年成功地應用到許多非線性系統中。所以在學習非線性濾波問題時應該先從EKF開始。

EKF演算法是將非線性函數進行泰勒展開,然後省略高階項,保留展開項的一階項,以此來實現非線性函數線性化,最後通過卡爾曼濾波演算法近似計算系統的狀態估計值和方差估計值。

一、EKF演算法詳細推導

【注】EKF推導參考的是黃蔚的博士論文「CKF及魯棒濾波在飛行器姿態估計中的應用研究」,論文中EKF,UKF和CKF等演算法講解的都很詳細,值得一看。

我們把KF與EKF演算法拿出來對比可以發現:

二、EKF演算法局限性:

該演算法線性化會引入階段誤差從而導致濾波精度下降,同時當初始狀態誤差較大或系統模型非線性程度較高時,濾波精度會受到嚴重影響甚至發散。

需要計算雅克比矩陣,復雜,計算量大,影響系統的實時性,還會導致EKF演算法的數值穩定性差。

當系統存在模型失配,量測干擾,量測丟失,量測延遲或狀態突變等復雜情況時,EKF演算法魯棒性差。

三、Matlab模擬:

clear all;clc;   close all;

tf = 50; 

Q = 10;w=sqrt(Q)*randn(1,tf); 

R = 1;v=sqrt(R)*randn(1,tf);

P =eye(1);

x=zeros(1,tf);

Xnew=zeros(1,tf);

x(1,1)=0.1; 

Xnew(1,1)=x(1,1);

z=zeros(1,tf);

z(1)=x(1,1)^2/20+v(1);

zjian=zeros(1,tf);

zjian(1,1)=z(1);

for k = 2 : tf

%%%%%%%%%%%%%%%模擬系統%%%%%%%%%%%%%%%

    x(:,k) = 0.5 * x(:,k-1) + (2.5 * x(:,k-1) / (1 + x(:,k-1).^2)) + 8 * cos(1.2*(k-1)) + w(k-1); 

    z(k) = x(:,k).^2 / 20 + v(k);

%%%%%%%%%%%%%%%EKF開始%%%%%%%%%%%%%%%

    Xpre = 0.5*Xnew(:,k-1)+ 2.5*Xnew(:,k-1)/(1+Xnew(:,k-1).^2) + 8 * cos(1.2*(k-1));  

    zjian =Xpre.^2/20;

    F = 0.5 + 2.5 * (1-Xnew.^2)/((1+Xnew.^2).^2);

    H = Xpre/10;    

    PP=F*P*F'+Q; 

    Kk=PP*H'*inv(H*PP*H'+R);

    Xnew(k)=Xpre+Kk*(z(k)-zjian);

    P=PP-Kk*H*PP;

end

  t = 2 : tf;  

 figure;   plot(t,x(1,t),'b',t,Xnew(1,t),'r*');  legend('真實值','EKF估計值');

模擬結果:

④ 卡爾曼濾波演算法是什麼

卡爾曼濾波是一個濾波演算法,應用非常廣泛,它是一種結合先驗經驗、測量更新的狀態估計演算法,卡爾曼濾波器是在估計線性系統狀態的過程中,以最小均方誤差為目的而推導出的幾個遞推數學等式。

卡爾曼過程中要用到的概念。即什麼是協方差,它有什麼含義,以及什麼叫最小均方誤差估計,什麼是多元高斯分布。如果對這些有了了解,可以跳過,直接到下面的分割線。

均方誤差:

它是"誤差"的平方的期望值(誤差就是每個估計值與真實值的差),也就是多個樣本的時候,均方誤差等於每個樣本的誤差平方再乘以該樣本出現的概率的和。

方差:

方差是描述隨機變數的離散程度,是變數離期望值的距離。

注意:

兩者概念上稍有差別,當你的樣本期望值就是真實值時,兩者又完全相同。最小均方誤差估計就是指估計參數時要使得估計出來的模型和真實值之間的誤差平方期望值最小。

⑤ 簡述數字濾波技術,其演算法有哪些

1、定義
所謂數字濾波, 就是通過一定的計算或判斷程序減少干擾在有用信號中的比重。 故實質上它是一種程序濾波。

2、演算法
算術平均值法、 中位值濾波法、 限幅濾波法、 慣性濾波法。

⑥ 用Matlab軟體實現變長NLMS自適應濾波器演算法

一種具有雙瞬變因子的LMS自適應濾波演算法

曾召華 劉貴忠 馬社祥

(西安交通大學信息與通信工程研究所 西安710049)

作者在文獻〔4〕中提出了一種改進的瞬變步長SPLMS自適應濾波演算法。本文在SPLMS演算法的基礎上,進一步提出一種基於瞬變步長、瞬變平滑因子的雙瞬變SPLMS演算法—DSPLMS演算法。該演算法除具有常規LMS演算法簡單的優點外,還具有更高的起始收斂速率、更小的權失調雜訊和更大的抑噪能力。文中重點討論瞬變步長、瞬變平滑因子的變化特性。計算機模擬結果支持了理論分析。
自適應濾波器,失調雜訊,收斂速度,最小均方誤差,瞬變因子
1 引言
自適應濾波器及其相應演算法是多年來人們廣泛研究的課題。基於Widrow-Hoff標準的LMS演算法和其相應的自適應濾波器以其演算法和結構簡單,便於實時信號處理等優點,在不同領域得到了最為廣泛的應用。而為克服常規的固定步長LMS或牛頓LMS(Newton LMS,即NLMS)自適應演算法在收斂速率、跟蹤速率與權失調雜訊之間要求上存在的較大矛盾,人們發展了各種各樣的改進型LMS演算法,如基於瞬變步長LMS自適應濾波演算法〔1~6〕、基於正交變換(DCT、FFT、小波變換、子帶濾波)的新型LMS均衡演算法〔7~8〕。基於模糊判斷的自適應LMS系統識別和基於最小四次均方誤差的LMS自適應平穩收斂演算法〔9~10〕。在所有改進型LMS演算法中,瞬變步長LMS自適應濾波演算法是研究最為廣泛的一類LMS自適應濾波演算法。本文演算法也是基於瞬變因子的一種改進LMS自適應濾波演算法。
2 SPLMS演算法分析及問題的提出
在文獻〔4〕中,作者對上述方案進行了大量的計算機模擬和理論分析,結果表明:(1)上述諸種演算法的收斂速率與系統輸入信噪比SNR直接相關,信噪比SNR越高,它們的收斂速率普遍提高;隨著信噪比SNR的降低,它們的收斂速率減慢,甚至出現發散現象,因此它們必須在弱干擾下完成規一化起動,即在起始過程中雜訊要相當小,否則效果不佳。(2)在上述所有演算法中,由於採用瞬時平方誤差性能函數e2k來代替均方誤差性能函數,所以其演算法的權值收斂過程表現為加權矢量的平均值變化規律和由於雜訊引起的隨機起伏項的疊加。因此,雜訊方差越大,則隨機起伏項越大,表現為權值振動也就越大。(3)為了追求更快的收斂性,往往增大μ和M,但濾波器階數越高,步長因子μ和輸入功率越大,就便得失調系數也越大。在有限次數起動迭代過程中,也就很難收斂到較穩態值,所以必須尋求更佳的瞬態步長演算法。
文獻〔4〕在准最小均方(Pseudo-LMS,即PLMS)誤差演算法基礎上通過採用滑動時間窗,減少PLMS演算法起動過程的計算量;同時在權值迭代中加一平滑迭代而使PLMS演算法具備全局較強的抗噪性能,較快速收斂性能而提出了SPLMS演算法,即:

其中rk為M階濾波器輸入信號的功率估值;Wk為濾波器的第k步M維最優權矢量估值;Xk是濾波器輸入信號的M維輸入數據矢量;dk為希望輸出;μk為濾波器第k步瞬態步長。切換條件中,閾值μ類似於LMS演算法的步長因子μL,滿足:

μL<μ<1/trR,R=E〔XkXTk〕(7)

為待定的演算法常數,是μk變化的動態平衡點。而α是一常數為平滑因子,它決定上一次的權值變化對本次權值更新的影響程度。k0是採用式(2)規一化啟動後,演算法收斂到較穩態時的步數。式(4)是μk下降的遞推演算法,式(5)是μk上升的平滑遞推演算法。λ為上升的速度因子,滿足0<λ<1。在實際應用中,考慮到學習過程的啟動速度,一般取較大的λ值,即:

0.9<λ<1,k0=25~35,|α|<0.3(8)

SPLMS演算法的實質是:在開始k0步中,採用啟動速度較快的MLMS(Mend LMS)演算法收斂到相對較穩態的狀態;然後在k≥k0+1過程中,採用瞬態步長μk來訓練演算法。而μk根據不同的切換條件將圍繞μ作升降變化,其迭代計算主要表現為不降即升的動態過程。α主要根據經驗來取值,輸入數據的非平穩性越大,雜訊方差越大時,增大α可明顯抑制振動,從而加速收斂過程;在雜訊小時減小α。
但SPLMS演算法也有一明顯不足,即α主要根據經驗來取值,沒有理論上的確切依據。α取值不當,反而容易造成演算法收斂性能更差,甚至發散的現象。從理論上分析,α與瞬態步長μk和輸出誤差ek(文中定義為:ek=dk-WTk Xk)應有一定關系。在演算法啟動階段,ek較大,為追求啟動速度而常取較大步長μk,但μk越大,權失調系數也就越大,有時反而起不到應有的作用,這時就應相應增加α值來平滑權失調雜訊;在演算法漸趨穩定,步長μk漸趨於常數,ek漸趨於0,此時α也應漸趨於0。綜合起來就是:α應隨步長μk和誤差ek瞬時變化而變化,也應是一瞬變因子。本文重點就是尋求瞬變因子αk的數學表達式以滿足上述分析的要求。
3 改進的雙瞬變因子SPLMS演算法——DSPLMS演算法
3.1 μk的變化特性
從式(4)和式(5)可以看出,在k≥k0+1過程中,μk根據不同的切換條件將圍繞μ作升降變化,μk的迭 代計算主要表現為不降即升的動態過程。對於式(5),設k≥kr時,μk<μ,則在k≥kr>k0+1的上升過程中:

即上升速度按指數衰減,使趨於平衡點μ的上升速度迅速減小。其變化過程類似於一電阻電容串聯電路上電容的充電過程。對式(4),由於μk=μk-1/(1+Rk),Rk>0,即使很小的Rk經過一步迭代就足以使μk<μ,再次切換到上升過程。當rk較大時,下降形成的負脈沖也較大。
綜上所述,在k≥k0+1的收斂過程中,μk的時變特性等價於幅值極不對稱的隨機正負尖脈沖序列組成的瞬態分量和直流分量μ的線性疊加。瞬態分量的負脈沖強度與rk瞬值對應,有利於抑制局部自激或短暫發散,減小權矢量雜訊,提高穩定度。在rk較小、演算法漸趨於穩定時,瞬變分量趨於0,μk~μ。
3.2 αk的變化特性
定義:ΔWk=Wk+1-Wk為自適應濾波器的權系數增量;ξ為均方誤差性能函數,ξ=E〔ek〕2,ek=dk-WTk Xk為輸出誤差,則SPLMS演算法的權系數更新公式由式(1)可重寫為:

Wk+1=Wk-μk^Wξk+αΔWk-1(10)

其中Wξ為ξ的梯度函數,^W為Wξ的第k步估計。由式(10)的系數更新公式,我們可寫出均方誤差性能函數的表達式:

式中上標T表示矢量的轉置。若用一矢量^Wζk+1去左乘式(10),則可得到:
^Wξk+1Wk+1=^Wζk+1Wk-μk^Wζk+1^Wζk+^Wζk+1αΔWk-1(13)

利用式(12)的結論,可將式(13)化簡為:

^TWζk+1ΔWk=0(14)

由於參量μk和α均為實的標量因子,故式(14)又可寫成:

(μk^TWζk+1)(αΔWk)=0(15)

式(15)清楚地表明:在SPLMS演算法中,自適應濾波器的權系數在迭代過程中,其均方誤差性能函數的梯度估值與權系數增量始終存在一個正交關系。ΔWk-1對ΔWk的調節作用是在當前梯度估值方向上,給出與梯度估值方向正交矢量,並以這兩個矢量所構成的合矢量來改變權系數空間的權重。
對於FIR結構的LMS自適應系統而言,其均方誤差性能函數在平穩輸入時為一個二次型函數,在收斂點附近仍可視為一個二次型函數,故有:

ξ(Wk+1)=WTk RWk-2WTk P+C(16)

式中R=E〔XTk Xk〕為輸入信號的自相關矩陣,P=E〔dkXk〕為所需信號與輸入信號的互相關矢量,C=E〔d2k〕,則由式(16)可得:

將式(17)代入式(18),則式(18)可變形為:

式(19)就是本文給出的瞬變平滑因子αk的數學表達式。顯然,它滿足前面分析時所提出的要求,且在演算法達到穩態收斂時,滿足:

limk→∞αk=0(20)

3.3 改進的雙瞬變SPLMS演算法——DSPLMS演算法
用式(19)中αk的表達式替換式(1)中的α,就得到本文提出的具有雙瞬變因子的LMS演算法——DSPLMS演算法,即
Wk+1=Wk+2μk(dk-WTk Xk)Xk+αk(Wk-Wk-1)(21)

μk=λ/(1+2λrk),0≤k≤k0(22)

由式(19)、(20)可知,αk是一個與μk成正比且具有衰減性的瞬變因子,從而使本文提出的DSPLMS演算法比SPLMS演算法更能快速穩定收斂;與常規LMS演算法相比,其性能有極大的提高,為實時信號處理提供了一個較好的演算法。
4 計算機模擬
模擬實驗的結構如圖1所示,其中dk為隨機輸入信號,nk為高斯白雜訊,ek為輸出誤差,xk為自適應濾波器的輸入,yk為濾波器輸出,此時xk=dk+nk。

在圖2中,dk是均值為0、方差為1的高斯白雜訊;nk是與dk不相關的均值為0、方差為1的高斯白雜訊;濾波器參數:M=32,λ=0.9,μL=0.005,μ=0.01,α=0.1。在圖3中,nk為均值為0、方差為0.1的高斯白雜訊,其它參數同圖2。圖2、3為分別採用LMS、SPLMS和DSPLMS演算法進行濾波的學習曲線比較圖。

從圖2(強干擾啟動)和圖3(較弱干擾啟動)中可以看出:在強干擾下,DSPL MS 具有比SPLMS好、比LMS好得多的啟動速度和收斂速度;而在弱干擾下,DSPLMS仍具有比SPLMS快、比LMS快得多的啟動速度。從圖中同時還可看出:DSPLMS與SPLM S具有幾乎相同的收斂速度,它們的收斂速度比LMS快得多。
5 結語
加進瞬變平滑項的規一化起動,使DSPLMS具有更高的起始收斂速度、更小的權失調雜訊和更大的抑噪能力;在平穩連接之後的穩態過程中,該演算法趨於步長為μ的LMS演算法性能,但由於瞬變分量負脈沖的作用,在相近的權失調量下可按式(7)取較大的μ值,增強演算法對時變參數過程的跟蹤處理能力;輸入數據的非平穩性越大,雜訊方差越大時,加進的瞬變平滑項使權失調雜訊減小,從而使本文提出的DSPLMS演算法比SPLMS演算法更能快速穩定地收斂;與常規LMS演算法相比,其性能有極大的提高,可以明顯抑制振動,從而加速收斂過程。

網址:

⑦ 濾波在數學上是如何實現的

在單片機進行數據採集時,會遇到數據的隨機誤差,隨機誤差是由隨機干擾引起的,其特點是在相同條件下測量同一量時,其大小和符號會現無規則的變化而無法預測,但多次測量的結果符合統計規律。為克服隨機干擾引起的誤差,硬體上可採用濾波技術,軟體上可採用軟體演算法實現數字濾波。濾波演算法往往是系統測控演算法的一個重要組成部分,實時性很強。

採用數字濾波演算法克服隨機干擾的誤差具有以下優點:

1、數字濾波無需其他的硬體成本,只用一個計算過程,可靠性高,不存在阻抗匹配問題。尤其是數字濾波可以對頻率很低的信號進行濾波,這是模擬濾波器做不到的。
2、數字濾波使用軟體演算法實現,多輸入通道可共用一個濾波程序,降低系統開支。
3、只要適當改變濾波器的濾波程序或運算,就能方便地改變其濾波特性,這對於濾除低頻干擾和隨機信號會有較大的效果。
4、在單片機系統中常用的濾波演算法有限幅濾波法、中值濾波法、算術平均濾波法、加權平均濾波法、滑動平均濾波等。

(1)限幅濾波演算法

該運算的過程中將兩次相鄰的采樣相減,求出其增量,然後將增量的絕對值,與兩次采樣允許的最大差值A進行比較。A的大小由被測對象的具體情況而定,如果小於或等於允許的最大差值,則本次采樣有效;否則取上次采樣值作為本次數據的樣本。

演算法的程序代碼如下:

#defineA //允許的最大差值
chardata; //上一次的數據
char filter()
{
chardatanew; //新數據變數
datanew=get_data(); //獲得新數據變數
if((datanew-data)>A||(data-datanew>A))
return data;
else
returndatanew;
}

說明:限幅濾波法主要用於處理變化較為緩慢的數據,如溫度、物體的位置等。使用時,關鍵要選取合適的門限制A。通常這可由經驗數據獲得,必要時可通過實驗得到。

(2)中值濾波演算法

該運算的過程是對某一參數連續采樣N次(N一般為奇數),然後把N次采樣的值按從小到大排列,再取中間值作為本次采樣值,整個過程實際上是一個序列排序的過程。

演算法的程序代碼如下:
#define N11 //定義獲得的數據個數
char filter()
{
charvalue_buff[N]; //定義存儲數據的數組
char count,i,j,temp;
for(count=0;count
{
value_buf[count]=get_data();
delay(); //如果採集數據比較慢,那麼就需要延時或中斷
}
for(j=0;j
{
for(value_buff[i]>value_buff[i+1]
{
temp=value_buff[i];
value_buff[i]=value_buff[i+1];
value_buff[i+1]=temp;
}
}
returnvalue_buff[(N-1)/2];
}

說明:中值濾波比較適用於去掉由偶然因素引起的波動和采樣器不穩定而引起的脈動干擾。若被測量值變化比較慢,採用中值濾波法效果會比較好,但如果數據變化比較快,則不宜採用此方法。

(3)算術平均濾波演算法

該演算法的基本原理很簡單,就是連續取N次采樣值後進行算術平均。
演算法的程序代碼如下:
char filter()
{
int sum=0;
for(count=0;count
{
sum+=get_data();
delay():
}
return (char)(sum/N);
}

說明:算術平均濾波演算法適用於對具有隨機干擾的信號進行濾波。這種信號的特點是有一個平均值,信號在某一數值附近上下波動。信號的平均平滑程度完全到決於N值。當N較大時,平滑度高,靈敏度低;當N較小時,平滑度低,但靈敏度高。為了方便求平均值,N一般取4、8、16、32之類的2的整數冪,以便在程序中用移位操作來代替除法。

(4)加權平均濾波演算法

由於前面所說的「算術平均濾波演算法」存在平滑度和靈敏度之間的矛盾。為了協調平滑度和靈敏度之間的關系,可採用加權平均濾波。它的原理是對連續N次采樣值分別乘上不同的加權系數之後再求累加,加權系數一般先小後大,以突出後面若干采樣的效果,加強系統對參數變化趨勢的認識。各個加權系數均小於1的小數,且滿足總和等於1的結束條件。這樣加權運算之後的累加和即為有效采樣值。其中加權平均數字濾波的數學模型是:

式中:D為N個采樣值的加權平均值:XN-i為第N-i次采樣值;N為采樣次數;Ci為加權系數。加權系數Ci體現了各種采樣值在平均值中所佔的比例。一般來說采樣次數越靠後,取的比例越大,這樣可增加新采樣在平均值中所佔的比重。加權平均值濾波法可突出一部分信號抵制另一部分信號,以提高采樣值變化的靈敏度。

樣常式序代碼如下:

char codejq[N]={1,2,3,4,5,6,7,8,9,10,11,12}; //code數組為加權系數表,存在程序存儲區
char codesum_jq=1+2+3+4+5+6+7+8+9+10+11+12;
char filter()
{
char count;
char value_buff[N];
int sum=0;
for(count=0;count
{
value_buff[count]=get_data();
delay();
}
for(count=0;count
sum+=value_buff[count]*jq[count];
return(char)(sum/sum_jq);
}

(5)滑動平均濾波演算法

以上介紹和各種平均濾波演算法有一個共同點,即每獲取一個有效采樣值必須連續進行若干次采樣,當采速度慢時,系統的實時得不到保證。這里介紹的滑動平均濾波演算法只採樣一次,將一次采樣值和過去的若干次采樣值一起求平均,得到的有效采樣值即可投入使用。如果取N個采樣值求平均,存儲區中必須開辟N個數據的暫存區。每新採集一個數據便存入暫存區中,同時去掉一個最老數據,保存這N個數據始終是最新更新的數據。採用環型隊列結構可以方便地實現這種數據存放方式。

程序代碼如下:
char value_buff[N];
char i=0;
char filter()
{
char count;
int sum=0;
value_buff[i++]=get_data();
if(i==N)
i=0;
for(count=0;count
sum=value_buff[count];
return (char)(sum/N);
}

(6)低通濾波

將普通硬體RC低通濾波器的微分方程用差分方程來表求,變可以採用軟體演算法來模擬硬體濾波的功能,經推導,低通濾波演算法如下:

Yn=a* Xn+(1-a) *Yn-1
式中 Xn——本次采樣值
Yn-1——上次的濾波輸出值;
,a——濾波系數,其值通常遠小於1;
Yn——本次濾波的輸出值。

由上式可以看出,本次濾波的輸出值主要取決於上次濾波的輸出值(注意不是上次的采樣值,這和加權平均濾波是有本質區別的),本次采樣值對濾波輸出的貢獻是比較小的,但多少有些修正作用,這種演算法便模擬了具體有教大慣性的低通濾波器功能。濾波演算法的截止頻率可用以下式計算:

fL=a/2Pit pi為圓周率3.14…
式中 a——濾波系數;
, t——采樣間隔時間;
例如:當t=0.5s(即每秒2次),a=1/32時;
fL=(1/32)/(2*3.14*0.5)=0.01Hz

當目標參數為變化很慢的物理量時,這是很有效的。另外一方面,它不能濾除高於1/2采樣頻率的干攪信號,本例中采樣頻率為2Hz,故對1Hz以上的干攪信號應採用其他方式濾除,

低通濾波演算法程序於加權平均濾波相似,但加權系數只有兩個:a和1-a。為計算方便,a取一整數,1-a用256-a,來代替,計算結果捨去最低位元組即可,因為只有兩項,a和1-a,均以立即數的形式編入程序中,不另外設表格。雖然采樣值為單元位元組(8位A/D)。為保證運算精度,濾波輸出值用雙位元組表示,其中一個位元組整數,一位元組小數,否則有可能因為每次捨去尾數而使輸出不會變化。
設Yn-1存放在30H(整數)和31H(小數)兩單元中,Yn存放在32H(整數)和33H(小數)中。濾波程序如下:
雖千萬里,吾往矣。

⑧ 什麼是數字圖像的頻率域濾波演算法,有哪些主要的演算法,謝謝

就是把數字圖像利用傅立葉變換,小波等數學方法,轉化為頻域進行處理,再把處理後的數據反變換成圖像數據。最基本的應用演算法如高通濾波,低通濾波,維納濾波,相位相關等等。不過用頻域處理都比較耗時,對實時性要求比較高的系統幾乎都不用頻域處理。

⑨ 什麼是濾波演算法

卡爾曼濾波器(Kalman Filter)是一個最優化自回歸數據處理演算法(optimal recursive data processing algorithm)。對於解決很大部分的問題,他是最優,效率最高甚至是最有用的。他的廣泛應用已經超過30年,包括機器人導航,控制,感測器數據融合甚至在軍事方面的雷達系統以及導彈追蹤等等。近年來更被應用於計算機圖像處理,例如頭臉識別,圖像分割,圖像邊緣檢測等等。

最佳線性濾波理論起源於40年代美國科學家Wiener和前蘇聯科學家Kолмогоров等人的研究工作,後人統稱為維納濾波理論。從理論上說,維納濾波的最大缺點是必須用到無限過去的數據,不適用於實時處理。為了克服這一缺點,60年代Kalman把狀態空間模型引入濾波理論,並導出了一套遞推估計演算法,後人稱之為卡爾曼濾波理論。卡爾曼濾波是以最小均方誤差為估計的最佳准則,來尋求一套遞推估計的演算法,其基本思想是:採用信號與雜訊的狀態空間模型,利用前一時刻地估計值和現時刻的觀測值來更新對狀態變數的估計,求出現時刻的估計值。它適合於實時處理和計算機運算。

現設線性時變系統的離散狀態防城和觀測方程為:

X(k) = F(k,k-1)·X(k-1)+T(k,k-1)·U(k-1)

Y(k) = H(k)·X(k)+N(k)

其中

X(k)和Y(k)分別是k時刻的狀態矢量和觀測矢量

F(k,k-1)為狀態轉移矩陣

U(k)為k時刻動態雜訊

T(k,k-1)為系統控制矩陣

H(k)為k時刻觀測矩陣

N(k)為k時刻觀測雜訊

則卡爾曼濾波的演算法流程為:

預估計X(k)^= F(k,k-1)·X(k-1)

計算預估計協方差矩陣
C(k)^=F(k,k-1)×C(k)×F(k,k-1)'+T(k,k-1)×Q(k)×T(k,k-1)'
Q(k) = U(k)×U(k)'

計算卡爾曼增益矩陣
K(k) = C(k)^×H(k)'×[H(k)×C(k)^×H(k)'+R(k)]^(-1)
R(k) = N(k)×N(k)'

更新估計
X(k)~=X(k)^+K(k)×[Y(k)-H(k)×X(k)^]

計算更新後估計協防差矩陣
C(k)~ = [I-K(k)×H(k)]×C(k)^×[I-K(k)×H(k)]'+K(k)×R(k)×K(k)'

X(k+1) = X(k)~
C(k+1) = C(k)~

⑩ 卡爾曼濾波演算法的發展歷史如何

全球定位系統(GPS)是新一代的精密衛星導航定位系統。由於其全球性、全天候以及連續實時三維定位等特點,在軍事和民用領域得到了廣泛的發展。近年來,隨著科學技術的發展,GPS導航和定位技術已向高精度、高動態的方向發展。但是由於GPS定位包含許多誤差源,尤其是測量隨機誤差和衛星的幾何位置誤差,使定位精度受到影響。利用傳統的方法很難消除。而GPS動態濾波是消除GPS定位隨機誤差的重要方法,即利用特定的濾波方法消除各種隨機誤差,從而提高GPS導航定位精度。 經典的最優濾波包括:Wiener濾波和Kalman濾波。由於Wiener濾波採用頻域法,作用受到限制;而Kalman濾波採用時域狀態空間法,適合於多變數系統和時變系統及非平穩隨機過程,且由於其遞推特點容易在計算機上實現,因此得到了廣泛的應用。為此,本文對Kalman濾波方法進行了深入的研究,並取得了一些成果。 本文首先概述了GPS的組成、應用及最新動態。在此基礎上介紹了GPS的導航定位原理,給出了衛星可見性演算法、選星演算法及定位演算法。然後介紹了卡爾曼濾波的基本原理,在此基礎上對動態用戶的飛行軌跡進行了模擬,對「singer」模型下的8狀態和11狀態卡爾曼濾波演算法進行了模擬分析,同時對「當前」統計模型下11狀態卡爾曼濾波演算法進行了模擬分析,並對濾波前後的定位精度進行了比較。在此基礎上,就如何提高濾波器的動態性能作者提出了改進演算法,即自適應卡爾曼濾波演算法、帶漸消因子的優化演算法及改進的優化演算法,並分別進行了模擬分析。最後作者將卡爾曼濾波演算法分別應用於GPS/DR和GPS/INS組合導航定位系統中,並分別對這兩種系統進行了建模和模擬分析,取得了較理想的結果。 本文的研究工作,對改進傳統的濾波方法有一定的參考和應用價值,並對卡爾曼濾波方法在提高GPS動態導航定位精度方面的應用起到積極的促進作用。

熱點內容
安卓型號如何隱藏wifi 發布:2025-05-10 22:33:26 瀏覽:579
sqlserver位置 發布:2025-05-10 22:27:31 瀏覽:716
pythonsae 發布:2025-05-10 21:59:30 瀏覽:964
rdp演算法 發布:2025-05-10 21:46:40 瀏覽:918
c語言求素數的方法 發布:2025-05-10 21:46:39 瀏覽:764
戰地5配置最低怎麼設置 發布:2025-05-10 21:44:12 瀏覽:674
microsoftsql2012 發布:2025-05-10 21:43:33 瀏覽:428
電腦買個游戲伺服器 發布:2025-05-10 21:25:15 瀏覽:241
機櫃存儲空間 發布:2025-05-10 21:25:07 瀏覽:267
安卓手機如何修改首屏 發布:2025-05-10 21:17:59 瀏覽:959