站在哪個肩膀上開始學習卡爾曼濾波

站在哪個肩膀上開始學習卡爾曼濾波

  • 前言
  • 從自適應濾波的角度
    • 正交性原理到維納解
    • kalman濾波的提出
    • innovation process新息過程
    • kalman濾波算法
    • Kalman 自適應濾波器算法
      • 初始條件
      • 輸入觀測向量過程
      • 已知參數
      • 計算:n=1,2,3,..
  • 參考

前言

不知道是不是每個想入局卡爾曼的同學都面臨同樣的問題,敲筆記之前瀏覽了一遍參考的東西,各種角度給出了非常生動的介紹,手里還有一本清華大學張賢達老師《現代信號處理》也從自適應濾波器的角度對卡爾曼濾波器的推導。雖然大模型也能給出示例程序,運行結果也能感受的到算法的魅力,但肉眼凡胎還是要親自學習理解一下,那就學院派先來,筆記一下張老師的推導思路。

從自適應濾波的角度

自適應濾波器發展的歷史中,匹配濾波器和維納濾波器是繞不開的兩座豐碑,匹配濾波器是輸出達到最大的信噪比,一個經典的應用就是通信系統自帶training sequence或pilot信號的解調。wiener濾波器采用最小均方估計誤差的準則,不需要提供先驗的同步信號,應用就更加廣泛了。這個經典的推導再很多年前的webrtc中的噪聲抑制之一:頻域維納濾波 敲過鍵盤。這里有很多關于極點的擴展分析,暫時涉及不到,就不深挖這個坑了。而數字信號處理中,估計誤差e(n)e(n)e(n)定義為期望響應d(n)d(n)d(n)與濾波器輸出y(n)y(n)y(n)之差,即y(n)=∑k=0∞wk?u(n?k),n=1,2,...y(n)=\sum_{k=0}^\infty w^*_ku(n-k), \ \ n=1,2,...y(n)=k=0?wk??u(n?k),??n=1,2,...e(n)=d(n)?y(n)e(n)=d(n)-y(n)e(n)=d(n)?y(n)這種估計誤差在某種統計意義下最小的設計就被稱為最優濾波器,優化準則即令某個代價函數最小化,在ai時代的熵函數盛行之前,最小均方誤差應該是最核心的存在,這就是大名鼎鼎的:MMSE(Minimum Mean Square Error),簡而言之:設計線性離散時間濾波器的系數wkw_kwk?,使輸出y(n)y(n)y(n)在給定的輸入樣本集合u(0),u(1),...u(0), u(1),...u(0),u(1),...的情況下給出期望響應d(n)d(n)d(n)的估計,并使得e(n)=d(n)?y(n)e(n)=d(n)-y(n)e(n)=d(n)?y(n)的均方誤差E∣e(n)∣2E{|e(n)|^2}Ee(n)2為最小。

正交性原理到維納解

從數學上課文還推導了正交性原理,并講述其從數學上作為線性最有濾波理論中令代價函數JJJ最小化的充分必要條件之關系。直接寫出定理和引理E{u(n?k)eopt?(n)}=0,k=0,1,2E\{u(n-k)e^*_{opt}(n)\}=0, \ \ \ k=0,1,2E{u(n?k)eopt??(n)}=0,???k=0,1,2E{yopt(n)eopt?(n)}=0E\{y_{opt}(n)e^*_{opt}(n)\}=0E{yopt?(n)eopt??(n)}=0根據前面的推導,可以將定理展開E{u(n?k)[d?(n)?∑i=0∞wopt,ku?(n?i)]}=0,k=0,1,2...E\{u(n-k) [ d^*(n)-\sum_{i=0}^\infty w_{opt,k} u^*(n-i)]\}=0, \ \ \ k=0,1,2...E{u(n?k)[d?(n)?i=0?wopt,k?u?(n?i)]}=0,???k=0,1,2...∑i=0∞wopt,kE{u(n?k)u?(n?i)}=E{u(n?k)d?(n)},k=0,1,2...\sum_{i=0}^\infty w_{opt,k} E\{u(n-k) u^*(n-i)\}=E\{u(n-k) d^*(n)\}, \ \ \ k=0,1,2...i=0?wopt,k?E{u(n?k)u?(n?i)}=E{u(n?k)d?(n)},???k=0,1,2...式中,數學期望項E{u(n?k)u?(n?i)}E\{u(n-k) u^*(n-i)\}E{u(n?k)u?(n?i)}代表v濾波器輸入在之后i?ki-ki?k的自相關函數Ru,u(i?k)R_{u,u}(i-k)Ru,u?(i?k),即Ru,u(i?k)=E{u(n?k)u?(n?i)}R_{u,u}(i-k)=E\{u(n-k) u^*(n-i)\}Ru,u?(i?k)=E{u(n?k)u?(n?i)}而數學期望項E{u(n?k)d?(n)}E\{u(n-k) d^*(n)\}E{u(n?k)d?(n)}等于v濾波器輸入u(n?k)u(n-k)u(n?k)與數學期望d(n)d(n)d(n)在滯后?k-k?k的互相關函數Ru,d(?k)R_{u,d}(-k)Ru,d?(?k) Ru,d(?k)=E{u(n?k)d?(n)}R_{u,d}(-k)=E\{u(n-k) d^*(n)\}Ru,d?(?k)=E{u(n?k)d?(n)}由此得到一個更簡潔的公式:∑i=0∞wopt,kRu,u(i?k)}=Ru,d(?k),k=0,1,2...\sum_{i=0}^\infty w_{opt,k} R_{u,u}(i-k)\}=R_{u,d}(-k), \ \ \ k=0,1,2...i=0?wopt,k?Ru,u?(i?k)}=Ru,d?(?k),???k=0,1,2...這就是Wiener-Hopf 差分方程,對應M階FIR濾波器,正無窮這個東西就變成了M-1,所有有限長FIR的M個齊次方程為∑i=0M?1wopt,kRu,u(i?k)}=Ru,d(?k),k=0,1,2...M?1\sum_{i=0}^{M-1} w_{opt,k} R_{u,u}(i-k)\}=R_{u,d}(-k), \ \ \ k=0,1,2...M-1i=0M?1?wopt,k?Ru,u?(i?k)}=Ru,d?(?k),???k=0,1,2...M?1如果定義M個輸入向量u(n)=[u(n),u(n?1),..u(n?M+1)]T\bold u(n)=[u(n),u(n-1),..u(n-M+1)]^Tu(n)=[u(n),u(n?1),..u(n?M+1)]T那么自相關矩陣為:R=E{u(n)uH(n)}=[Ru,u(0)Ru,u(1)Ru,u(M?1)Ru,u?(1)Ru,u(0)Ru,u(M?2)?Ru,u?(M?1)Ru,u?(M?2)Ru,u(0)]R=E\{\bold u(n)\bold u^H(n)\} = \begin{bmatrix} R_{u,u}(0) &R_{u,u}(1) & & R_{u,u}(M-1) \\ R_{u,u}^*(1) &R_{u,u}(0)& & R_{u,u}(M-2) \\ & \ddots & \\ R_{u,u}*(M-1)&R_{u,u}^*(M-2)& &R_{u,u}(0) \end{bmatrix} R=E{u(n)uH(n)}=?Ru,u?(0)Ru,u??(1)Ru,u??(M?1)?Ru,u?(1)Ru,u?(0)?Ru,u??(M?2)??Ru,u?(M?1)Ru,u?(M?2)Ru,u?(0)??等式右側則是輸入與期望響應的互相關向量:r=E{u(n)d?(n)}=[Ru,d(0),Ru,d(?1),...,Ru,d(?M+1)]Tr=E\{\bold u(n) d^*(n)\}=[R_{u,d}(0), R_{u,d}(-1),...,R_{u,d}(-M+1)]^Tr=E{u(n)d?(n)}=[Ru,d?(0),Ru,d?(?1),...,Ru,d?(?M+1)]T進一步簡化成矩陣表達:Rwopt=rRw_{opt}=rRwopt?=r等式兩側左乘以R?1R^{-1}R?1,則得到維納濾波器的最有權重解:wopt=R?1rw_{opt}=R^{-1}rwopt?=R?1r

kalman濾波的提出

kalman濾波是再wiener理論上發展的,“采用頻域設計法是造成Wiener濾波器設計困難的根本原因。因此人們逐漸轉向尋求在時域內直接設計最優濾波器的方法。Kalman在20世紀60年代初提出了Kalman濾波理論。Kalman濾波理論是一種時域方法。它把狀態空間的概念引入隨機估計理論,把信號過程視為白噪聲作用下一個線性系統的輸出,用狀態方程來描述輸入-輸出關系,在估計過程中利用系統狀態方程、觀測方程和白噪聲激勵,即系統過程噪聲和觀測噪聲,利用它們的統計特性形成濾波算法。由于所用的信息都是時域內的量,所以Kalman濾波不但可以對平穩的一維隨機過程進行估計,也可以對非平穩的、多維隨機過程進行估計。同時Kalman濾波算法是遞推的,便于在計算機上實現實時應用,克服了經典Wiener濾波方法的缺點和局限性”。上面這段摘自《Kalman濾波算法詳解及MATLAB實現》相對于wiener解本身的數學方法是非遞推的(lms/rls等方法是等效實現),卡爾曼方法先天的遞推計算,即自適應濾波器哦。這個推導過程與最小二乘法的自適應框架統一。
考慮一離散時間的動態系統,它由描述狀態的過程方程和描述觀測向量的觀測方程共同表示。
(1)過程方程x(n+1)=F(n+1,n)x(n)+v1(n)\bold x(n+1)=\bold F(n+1,n)\bold x(n)+\bold v_1(n)x(n+1)=F(n+1,n)x(n)+v1?(n) M?1維向量M*1維向量M?1維向量x(n)x(n)x(n)表示系統再離散時間nnn的狀態向量,它是不可觀測的;M?MM*MM?M矩陣F(n+1,n)\bold F(n+1,n)F(n+1,n)稱為狀態轉移矩陣,描述動態系統在時間n的狀態到n+1的狀態之間的轉移,它應該是已知的;而M?1M*1M?1向量v1(n)v_1(n)v1?(n)的過程噪聲向量,描述狀態轉移中間的加性噪聲或誤差。因為這樣一個過程也可以看作是狀態的變遷,所以此方程也稱為狀態轉移方程。
(2)觀測方程y(n)=C(n)x(n)+v2(n)y(n)=\bold C(n)\bold x(n)+\bold v_2(n)y(n)=C(n)x(n)+v2?(n) y(n)y(n)y(n)代表動態系統在時間n的N?1N*1N?1觀測向量;N?MN*MN?M矩陣C(n)稱為觀測矩陣(描述狀態經過其作用,變成可觀測數據),要求是已知的;v2v_2v2?表示觀測噪聲向量,其維度與觀測向量相同。
要簡化計算,以下的假設是必須滴: v1(n)v_1(n)v1?(n)過程噪聲向量和v2v_2v2?觀測噪聲向量都是零均值的白噪聲,兩者也是線性無關的。他們的相關矩陣分別為E{v1(n)v1H(k)}={Q1(n),if?n=kO,if?n≠kE\{v_1(n)v_1^H(k)\}=\begin{cases} Q_1(n), & \text{if }n=k \\ O, & \text{if }n\neq k \end{cases}E{v1?(n)v1H?(k)}={Q1?(n),O,?if?n=kif?n=k?E{v2(n)v2H(k)}={Q2(n),if?n=kO,if?n≠kE\{v_2(n)v_2^H(k)\}=\begin{cases} Q_2(n), & \text{if }n=k \\ O, & \text{if }n\neq k \end{cases}E{v2?(n)v2H?(k)}={Q2?(n),O,?if?n=kif?n=k?E{v1(n)v2H(k)}=O,?n,kE\{v_1(n)v_2^H(k)\}=O, \space \forall n,kE{v1?(n)v2H?(k)}=O,??n,k
利用觀測的向量y(1),...,y(n)y(1),...,y(n)y(1),...,y(n)n≥1n\geq 1n1求狀態向量x(i)\bold x(i)x(i)各個分量的最小二乘估計,那么具體的根據狀態變量索引iii和觀測向量索引nnn的關系,kalman問題又細分為三個類型:
(1)濾波(i=ni=ni=n):使用n時刻及以前時刻的測量數據,抽取n時刻的信息;
(2)平滑(1≤i<n1\leq i <n1i<n):因為n以前某個時刻的信息,而且n時刻以后的測量數據也可用,非因果的效果使得平滑更加精確;
(3)預測(i > n):使用n時刻及其以前時刻的測量數據,提前抽取n+τ,τ>0\tau,\space \tau >0τ,?τ>0時刻(未來)的信息,這是一種預測。

innovation process新息過程

看到這個概念,我的第一反映這是什么WTF?為什么叫“新息”?在卡爾曼濾波中,新息過程就是這個預測值和實際觀測值之間的差異。用數學符號表示就是:
新息=實際觀測值?預測的觀測值新息 = 實際觀測值 - 預測的觀測值 新息=實際觀測值?預測的觀測值結合上面的符號,給定觀測值y(1),...,y(n?1)y(1),...,y(n-1)y(1),...,y(n?1),求觀測向量y(n)y(n)y(n)的最小二乘估計,記作y^1(n)=defy^(n∣y(1),...,y(n?1))\hat y_1(n)\stackrel{\text{def}}{=}\hat y(n|y(1),...,y(n-1))y^?1?(n)=defy^?(ny(1),...,y(n?1))y(n)y(n)y(n)的新息過程定義為α(n)=y(n)?y^1(n)\alpha(n)=y(n)-\hat y_1(n)α(n)=y(n)?y^?1?(n)N?1N*1N?1向量α(n)\alpha(n)α(n)表示觀測數據y(n)y(n)y(n)的新的信息,簡稱新息。新息的性質:
(1)n時刻的新息α\alphaα與過去所有的觀測數據y(1),...,y(n?1)y(1),...,y(n-1)y(1),...,y(n?1)正交,即E{α(n)yH(k)}=O,1≤k<nE\{\alpha(n)y^H(k)\}=O,\space 1\leq k <nE{α(n)yH(k)}=O,?1k<n
(2)新息過程由彼此正交的隨機向量序列{α(n)}\{\alpha(n)\}{α(n)}組成,E{α(n)αH(k)}=O,1≤k<nE\{\alpha(n)\alpha^H(k)\}=O,\space 1\leq k <nE{α(n)αH(k)}=O,?1k<n
(3)表示觀測數據的隨機向量序列{y(1),...,y(n)}\{y(1),...,y(n)\}{y(1),...,y(n)}與表示新息過程的隨機向量序列{α(1),...,α(n)}\{\alpha(1),...,\alpha(n)\}{α(1),...,α(n)}一一對應,即{y(1),...,y(n)}={α(1),...,α(n)}\{y(1),...,y(n)\}=\{\alpha(1),...,\alpha(n)\}{y(1),...,y(n)}={α(1),...,α(n)}以上性質表明:n時刻的新息α(n)\alpha(n)α(n)是一個與n時刻之前的觀測數據{y(1),...,y(n?1)}\{y(1),...,y(n-1)\}{y(1),...,y(n?1)}不相關、具有白噪聲性質的隨機過程,但它卻能夠提供有關y(n)y(n)y(n)的新信息。新息的的相關矩陣R(n)=E{α(n)αH(k)}R(n)=E\{\alpha(n)\alpha^H(k)\}R(n)=E{α(n)αH(k)}在卡爾曼濾波中,并不直接估計觀測數據向量的一步預測y^1(n)\hat y_1(n)y^?1?(n),而是先計算狀態向量的一步預測:x^1(n)=defx(n∣y(1),...,y(n?1))\hat x_1(n)\stackrel{\text{def}}{=} x(n|y(1),...,y(n-1))x^1?(n)=defx(ny(1),...,y(n?1))然后利用觀測方程y^1(n)=C(n)x^1(n)\hat y_1(n)=C(n)\hat x_1(n)y^?1?(n)=C(n)x^1?(n)帶入新息計算的公式α(n)=y(n)?C(n)x^1(n)=C(n)[x(n)?x^1(n)]+v2(n)\alpha(n)=y(n)-C(n)\hat x_1(n)=C(n)[x(n)-\hat x_1(n)]+v_2(n)α(n)=y(n)?C(n)x^1?(n)=C(n)[x(n)?x^1?(n)]+v2?(n)此即新息過程的實際計算公式,但首先一步預測的狀態向量估計x^1(n)\hat x_1(n)x^1?(n)要先求出。定義狀態向量的一步預測誤差?(n,n?1)=defx(n)?x^1(n)\epsilon(n,n-1)\stackrel{\text{def}}{=}x(n)-\hat x_1(n)?(n,n?1)=defx(n)?x^1?(n)α(n)=C(n)?(n,n?1)+v2(n)\alpha(n)=C(n)\epsilon(n,n-1)+v_2(n)α(n)=C(n)?(n,n?1)+v2?(n)然后將這個式子帶入相關矩陣R(n)=C(n)E{?(n,n?1)?H(n,n?1)}CH(n)+E{v2(n)v2H(n)}=C(n)K(n,n?1)CH(n)+Q2(n)R(n)=C(n)E\{\epsilon(n,n-1)\epsilon^H(n,n-1)\}C^H(n)+E\{v_2(n)v_2^H(n)\}\\ =C(n)K(n,n-1)C^H(n)+Q_2(n)R(n)=C(n)E{?(n,n?1)?H(n,n?1)}CH(n)+E{v2?(n)v2H?(n)}=C(n)K(n,n?1)CH(n)+Q2?(n)K(n,n?1)=E{?(n,n?1)?H(n,n?1)}K(n,n-1)=E\{\epsilon(n,n-1)\epsilon^H(n,n-1)\}K(n,n?1)=E{?(n,n?1)?H(n,n?1)}定義為一步預測狀態誤差的相關矩陣,Q2(n)Q_2(n)Q2?(n)是觀測噪聲v2(n)v_2(n)v2?(n)的相關矩陣。

kalman濾波算法

新息過程是為了轉入kalman濾波算法的核心問題:如何利用新息過程估計狀態向量的預測?答案是用新息過程序列α(1),...,α(n)\alpha(1),...,\alpha(n)α(1),...,α(n)的線性組合直接構造狀態向量的一步預測:x^1(n+1)=defx^1(n+1∣y(1),...,y(n))=∑k=1nW1(k)α(k)\hat x_1(n+1)\stackrel{\text{def}}{=}\hat x_1(n+1|y(1),...,y(n)) =\sum_{k=1}^nW_1(k)\alpha(k)x^1?(n+1)=defx^1?(n+1∣y(1),...,y(n))=k=1n?W1?(k)α(k)式子中W1(k)W_1(k)W1?(k)表示與一步預測相對應的權矩陣,且k為離散時間,如何求解這個權矩陣?那就得利用正交性原理了,即最有估計的誤差與已知值正交,這里誤差公式是下一拍的,?(n+1,n)=x(n+1)?x^1(n+1)\epsilon(n+1,n){=}x(n+1)-\hat x_1(n+1)?(n+1,n)=x(n+1)?x^1?(n+1),已知值其實就是新息α(n)\alpha(n)α(n),由此設計公式E{?(n+1,n)αH(k)}=E{[x(n+1)?x^1(n+1)]αH(k)}=O,k=1,...,.nE\{\epsilon(n+1,n)\alpha^H(k)\}=E\{[x(n+1)-\hat x_1(n+1)]\alpha^H(k)\}=O, \space k=1,...,.nE{?(n+1,n)αH(k)}=E{[x(n+1)?x^1?(n+1)]αH(k)}=O,?k=1,...,.n代入權重表達式,并利用新息的正交性可得E{x(n+1)αH(k)}=W1(k)E{α(k)αH(k)}=W1(k)R(k)E\{x(n+1)\alpha^H(k)\}=W_1(k)E\{\alpha(k)\alpha^H(k)\}=W_1(k)R(k)E{x(n+1)αH(k)}=W1?(k)E{α(k)αH(k)}=W1?(k)R(k)右×一下R?1(k)R^{-1}(k)R?1(k)得到了權重的自洽表達W1(k)=E{x(n+1)αH(k)}R?1(k)W_1(k)=E\{x(n+1)\alpha^H(k)\}R^{-1}(k)W1?(k)=E{x(n+1)αH(k)}R?1(k)由此狀態向量的一步預測的最小均方估計表示為x^1(n+1)=∑k=1n?1E{x(n+1)αH(k)}R?1(k)α(k)+E{x(n+1)αH(n)}R?1(n)α(n)\hat x_1(n+1)=\sum_{k=1}^{n-1}E\{x(n+1)\alpha^H(k)\}R^{-1}(k)\alpha(k)+E\{x(n+1)\alpha^H(n)\}R^{-1}(n)\alpha(n)x^1?(n+1)=k=1n?1?E{x(n+1)αH(k)}R?1(k)α(k)+E{x(n+1)αH(n)}R?1(n)α(n)利用之前的假設E{v1(n)α(k)}=O,k=0,1,...,nE\{v_1(n)\alpha(k)\}=O, k=0,1,...,nE{v1?(n)α(k)}=O,k=0,1,...,n,結合狀態方程x(n+1)=F(n+1,n)x(n)+v1(n)\bold x(n+1)=\bold F(n+1,n)\bold x(n)+\bold v_1(n)x(n+1)=F(n+1,n)x(n)+v1?(n)E{x(n+1)αH(k)}=E{[F(n+1,n)x(n)+v1(n)]αH(k)}=F(n+1,n)E{x(n)αH(k)},k=0,1,...,nE\{x(n+1)\alpha^H(k)\}=E\{[\bold F(n+1,n)\bold x(n)+\bold v_1(n)]\alpha^H(k)\}=\bold F(n+1,n)E\{\bold x(n)\alpha^H(k)\}, \space k=0,1,...,nE{x(n+1)αH(k)}=E{[F(n+1,n)x(n)+v1?(n)]αH(k)}=F(n+1,n)E{x(n)αH(k)},?k=0,1,...,n這樣先化簡最小均方估計的第一項∑k=1n?1E{x(n+1)αH(k)}R?1(k)α(k)=F(n+1,n)∑k=1n?1E{x(n)αH(k)}R?1(k)α(k)=F(n+1,n)x^1(n)\sum_{k=1}^{n-1}E\{x(n+1)\alpha^H(k)\}R^{-1}(k)\alpha(k)=F(n+1,n)\sum_{k=1}^{n-1}E\{x(n)\alpha^H(k)\}R^{-1}(k)\alpha(k)=F(n+1,n)\hat x_1(n)k=1n?1?E{x(n+1)αH(k)}R?1(k)α(k)=F(n+1,n)k=1n?1?E{x(n)αH(k)}R?1(k)α(k)=F(n+1,n)x^1?(n)最小均方估計的第二項,若定義G(n)=defE{x(n+1)αH(n)}R?1(n)G(n)\stackrel{\text{def}}{=}E\{x(n+1)\alpha^H(n)\}R^{-1}(n)G(n)=defE{x(n+1)αH(n)}R?1(n)那么最終得到的預測公式x1(n+1)==F(n+1,n)x^1(n)+G(n)α(n)x_1(n+1)==F(n+1,n)\hat x_1(n)+G(n)\alpha(n)x1?(n+1)==F(n+1,n)x^1?(n)+G(n)α(n)上面的公式表明n+1時刻的狀態向量的一步預測分為非自適應的部分F(n+1,n)x^1(n)F(n+1,n)\hat x_1(n)F(n+1,n)x^1?(n)和自適應的部分G(n)α(n)G(n)\alpha(n)G(n)α(n)這里G(n)G(n)G(n)稱為Kalman增益(矩陣)。初學者到這里肯定微醺了,那不妨先記住流程吧

Kalman 自適應濾波器算法

初始條件

x^1(1)=E{x(1)}\hat x_1(1)=E\{x(1)\}x^1?(1)=E{x(1)}
K(1,0)=E{[x(1)?xˉ(1)][x(1)?xˉ(1)]H},xˉ(1)=E{x(1)}K(1,0)=E\{[x(1)-\bar x(1)][x(1)-\bar x(1)]^H\},\space\space\bar x(1)=E\{x(1)\}K(1,0)=E{[x(1)?xˉ(1)][x(1)?xˉ(1)]H},??xˉ(1)=E{x(1)}

輸入觀測向量過程

觀測向量序列={y(1),...,y(n)}觀測向量序列=\{y(1),...,y(n)\}觀測向量序列={y(1),...,y(n)}

已知參數

狀態轉移矩陣F(n+1,n)觀測矩陣C(n)過程噪聲向量的相關矩陣Q1(n)觀測噪聲向量的相關矩陣Q2(n)狀態轉移矩陣F(n+1,n)\\觀測矩陣C(n)\\過程噪聲向量的相關矩陣Q_1(n) \\觀測噪聲向量的相關矩陣Q_2(n) 狀態轉移矩陣F(n+1,n)觀測矩陣C(n)過程噪聲向量的相關矩陣Q1?(n)觀測噪聲向量的相關矩陣Q2?(n)

計算:n=1,2,3,…

G(n)=F(n+1,n)K(n,n?1)CH(n)[C(n)K(n,n?1)CH(n)+Q2(n)]?1α(n)=y(n)?C(n)x^1(n)x^1(n+1)=F(n+1,n)x^1(n)+G(n)α(n)P(n)=K(n,n?1)?F?1(n+1,n)G(n)C(n)K(n,n?1)K(n+1,n)=F(n+1,n)P(n)FH(n+1,n)+Q1(n)\begin{aligned} G(n) & = F(n+1,n)K(n,n-1)C^H(n)[C(n)K(n,n-1)C^H(n)+Q_2(n)] ^{-1}\\ \alpha(n) & = y(n) - C(n)\hat x_1(n)\\ \hat x_1(n+1) & = F(n+1,n)\hat x_1(n) + G(n) \alpha(n) \\ P(n) & =K(n,n-1) - F^{-1}(n+1,n) G(n)C(n) K(n,n-1) \\ K(n+1,n) & =F(n+1,n)P(n)F^H(n+1,n) + Q_1(n) \\ \end{aligned} G(n)α(n)x^1?(n+1)P(n)K(n+1,n)?=F(n+1,n)K(n,n?1)CH(n)[C(n)K(n,n?1)CH(n)+Q2?(n)]?1=y(n)?C(n)x^1?(n)=F(n+1,n)x^1?(n)+G(n)α(n)=K(n,n?1)?F?1(n+1,n)G(n)C(n)K(n,n?1)=F(n+1,n)P(n)FH(n+1,n)+Q1?(n)?
上面就是清華專著的推導,Kalman濾波器的估計性能,使濾波后的狀態估計誤差的相關矩陣P(n)的跡最小化,即Kalman濾波器是狀態向量x(n)的線性最小方差估計。

參考

卡爾曼濾波個人學習筆記 (一)
卡爾曼濾波(一):初始篇
卡爾曼濾波算法原理講解(搬運的文章,備份留作學習用)
卡爾曼濾波:從入門到精通
圖解卡爾曼濾波(Kalman Filter)
The Kalman Filter
Kalman Filter 卡爾曼濾波
A geometric interpretation of the covariance matrix
How a Kalman filter works, in pictures
卡爾曼濾波原理及應用——MATLAB仿真
Kalman濾波算法詳解及MATLAB實現

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/90448.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90448.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90448.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是FCR,如何提升FCR?

? FCR&#xff08;First Call Resolution&#xff0c;首次呼叫解決率&#xff09;&#xff0c;意思是指客戶首次聯系客服時&#xff0c;問題在單次交互中被完全解決的比率。? ?FCR &#xff08;首次解決的通話量 / 總首次通話量&#xff09; 100%一、關鍵要點&…

【瀏覽器插件沖突】Edge瀏覽器加載不出來CSDN創作者中心

【瀏覽器插件沖突】Edge瀏覽器加載不出來CSDN創作者中心寫在最前面報錯GPT的全部回復&#xff0c;可以參考&#x1f50d; 具體錯誤解釋&#xff1a;1. **CORS錯誤**2. **XHR 請求失敗**3. **ReaderArticleFinder / Readability**&#x1f6e0;? 為什么頁面沒有內容顯示&#x…

從零開發Java坦克大戰:架構設計與難點突破 (下)

6. 游戲引擎類:6.1 完整源碼展示: import javax.swing.*; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.ArrayList; import java.util.HashSet; import java.util.Random; import java.util.Set;public class Gam…

Git下載與安裝全攻略

引言 Git是當今最流行的分布式版本控制系統&#xff0c;由Linus Torvalds于2005年創建。它幫助開發者高效管理代碼變更&#xff0c;支持多人協作開發&#xff0c;是現代軟件開發不可或缺的工具。無論是個人項目還是團隊協作&#xff0c;Git都能提供強大的版本控制功能。 本文…

【Elasticsearch】快照生命周期管理 SLM(理論篇)

《Elasticsearch 集群》系列&#xff0c;共包含以下文章&#xff1a; 1?? 冷熱集群架構2?? 合適的鍋炒合適的菜&#xff1a;性能與成本平衡原理公式解析3?? ILM&#xff08;Index Lifecycle Management&#xff09;策略詳解4?? Elasticsearch 跨機房部署5?? 快照與恢…

深入理解 UDP 協議:從原理到實戰的技術解析

UDP&#xff08;User Datagram Protocol&#xff0c;用戶數據報協議&#xff09;作為 TCP 的 "輕量型伙伴"&#xff0c;在實時通信、流媒體傳輸等場景中發揮著不可替代的作用。與 TCP 的可靠傳輸不同&#xff0c;UDP 以 "簡單、快速、無連接" 為設計理念&a…

c語言-數據結構-沿順相同樹解決對稱二叉樹問題的兩種思路

二叉樹OJ前言對稱二叉樹前言 本篇繼續講解二叉樹OJ題目之對稱二叉樹 對稱二叉樹 題目鏈接&#xff1a;https://leetcode.cn/problems/symmetric-tree/description/ 該題要求比較這棵樹是否對稱&#xff0c;對稱&#xff0c;指的是結構對稱并且值也要對稱&#xff0c;即對應…

云原生可觀測-日志觀測(Loki)最佳實踐

一、Loki 簡介 云原生可觀測三大支柱 支柱工具用途MetricsPrometheus性能趨勢、系統負載LogsLoki原始事件記錄、錯誤診斷TracesTempo / Jaeger分布式鏈路追蹤 一、Loki 簡介 1.1 Loki 是什么 Loki 是由 Grafana Labs 開發的 日志聚合系統&#xff0c;與 Prometheus 架構一…

Windows Server 2003 R2系統C盤擴容教程

一、PAGreen軟件下載 下載地址&#xff1a; ExtPart.zip https://pan.baidu.com/s/1FxK61XNI0t-4JIEWK1QA8Q?pwd8888 提取碼: 8888 二、將軟件解壓縮 (1)、執行步驟一下載的程序 雙擊下圖所示可執行程序 (2)、選擇好解壓路徑&#xff0c;點擊「Unzip」進行解壓縮 (3)、磁…

Kubernetes配置管理

目錄什么是ConfigMap創建ConfigMap1&#xff1a;基于目錄創建ConfigMap1.創建conf目錄&#xff0c;放置文件2.基于目錄下的所有文件創建ConfigMap3.查看當前創建的ConfigMap2&#xff1a;基于文件創建ConfigMap1.單個文件創建ConfigMap2.使用帶有key的命令創建ConfigMap3.多個文…

golang怎么實現每秒100萬個請求(QPS),相關系統架構設計詳解

一.需求 使用Golang,以Gin框架為基礎,設計一個能夠處理每秒100萬請求(QPS 1M)的系統架構 注意:100萬QPS是一個很高的數字,單機通常難以處理,所以必須采用分布式架構,并且需要多層次的架構設計和優化 二.搭建步驟 1.系統架構設計 為了實現高并發,需要考慮以下幾個方面…

HCIA再復習

第一章.網絡基礎1.1 網絡類型分類網絡按照二層鏈路類型分為以下四種&#xff1a;多點接入網絡&#xff08;MA&#xff09;&#xff1a;1&#xff0c;廣播型多點接入&#xff08;BMA&#xff09;&#xff1a;如以太網&#xff0c;支持廣播&#xff0c;設備通過MAC地址通信&#…

Qt 數據庫連接池實現與管理

在 Qt 應用程序中&#xff0c;頻繁創建和銷毀數據庫連接會帶來顯著的性能開銷。數據庫連接池通過復用現有連接&#xff0c;避免重復創建和銷毀連接的開銷&#xff0c;從而提高應用程序的響應速度和吞吐量。本文將詳細介紹 Qt 中數據庫連接池的實現與管理方法。 一、數據庫連接池…

數據采集分析:從信息洪流中掘金的科學與藝術

——如何將原始數據轉化為商業決策的黃金&#xff1f;&#x1f310; 引言&#xff1a;我們正淹沒在數據的海洋&#xff0c;卻渴求著知識的甘泉每天全球產生 2.5萬億字節 數據&#xff08;相當于每秒下載4.5萬部高清電影&#xff09;&#xff0c;但未經分析的數據如同未提煉的原…

Oracle國產化替代:一線DBA的技術決策突圍戰

從“如履薄冰”到“游刃有余”,中國數據庫的自主之路正重塑技術人的思維地圖。 “凌晨三點的最后一次數據校驗通過,割接系統綠燈全亮——**河北移動核心賬務系統的Oracle數據庫已被GoldenDB完全替代**。”2025年6月底,這場持續兩年的攻堅戰畫上句號。當全省業務流量平穩切…

OS19.【Linux】進程狀態(1)

目錄 1.情景引入 2.操作系統學科對進程狀態的分類 運行狀態 基于時間片的輪轉調度算法 阻塞狀態 等待IO設備的例子 等待其他進程中需要獲取的數據 進程喚醒 掛起狀態(全稱為阻塞掛起狀態) 簡單談談虛擬內存管理 就緒狀態 筆面試題 3.Linux對進程狀態的分類 R和S狀…

Hadoop小文件合并技術深度解析:HAR文件歸檔、存儲代價與索引結構

HDFS小文件問題的背景與挑戰在Hadoop分布式文件系統&#xff08;HDFS&#xff09;的設計哲學中&#xff0c;"大文件、流式訪問"是核心原則。然而現實場景中&#xff0c;海量小文件&#xff08;通常指遠小于HDFS默認塊大小128MB的文件&#xff09;的涌入卻成為系統性能…

Verilog 提取信號的上升沿或者下降沿

上升沿提取代碼&#xff1a;reg [1:0] F1;always (posedge clk)beginif(rst_n 1b0) F1[1:0]<2b00;else F1[1:0]<{F1[0],start_i};endwire start_l2h (F1[1:0]2b01)?1b1:1b0;下降沿提取代碼&#xff1a;reg [1:0] F1;always (posedge clk)b…

.Net core 部署到IIS出現500.19Internal Server Error 解決方法

.Net core 部署到IIS&#xff0c;網頁出現500.19Internal Server Error 解決方法解決方法 在URL:https://dotnet.microsoft.com/zh-tw/download/dotnet/8.0下載并安裝dotnet-hosting-8.0.18-win.exe 重啟IIS服務器

Linux 基本命令整理

&#x1f427; Linux 基本命令整理 為了方便初學者快速掌握 Linux 常用命令&#xff0c;以下是經過分類整理的核心命令及用法說明。 &#x1f4c2; 目錄操作與文件管理 pwd 核心功能&#xff1a;打印當前工作目錄的絕對路徑&#xff0c;明確用戶所在位置。 實操示例&#x…