網(wǎng)站的排版網(wǎng)絡(luò)營(yíng)銷成功的案例分析
目錄
- 非線性系統(tǒng)
- 泰勒展開
- 卡爾曼濾波
- 卡爾曼增益
- 模型誤差協(xié)方差矩陣
- 公式總結(jié)
本節(jié)默認(rèn)你能夠完整推導(dǎo)標(biāo)準(zhǔn)卡爾曼濾波,將會(huì)簡(jiǎn)化一些推導(dǎo)的描述。如果你還不會(huì)完整推導(dǎo)標(biāo)準(zhǔn)卡爾曼濾波,請(qǐng)先從 【卡爾曼濾波理論推導(dǎo)與實(shí)踐】系列開始看起。
非線性系統(tǒng)
擴(kuò)展卡爾曼濾波解決的是非線性系統(tǒng),其非線性狀態(tài)空間方程為:
{ z k 模 ? = f ( z k ? 1 模 ? , F k ? 1 ) y k 測(cè) ? = h ( z k 測(cè) ? ) \begin{cases}\vec{z_{k模}}=\mathrm{f}(\vec{z_{k-1模}},F_{k-1})\\\vec{y_{k測(cè)}}=\mathrm{h}(\vec{z_{k測(cè)}})\end{cases} {zk模??=f(zk?1模??,Fk?1?)yk測(cè)??=h(zk測(cè)??)?
f , h \mathrm{f},\mathrm{h} f,h函數(shù)是向量函數(shù),有多個(gè)輸出 [ f 1 . . . f n ] \left[\begin{matrix}f_1\\...\\f_n\\\end{matrix}\right] ?f1?...fn?? ?, n n n是 z ? \vec{z} z的維數(shù),比如追蹤平面圖像物體坐標(biāo)和速度, z ? = [ x y v x v y ] \vec{z}=\left[\begin{matrix}x\\y\\v_x\\v_y\end{matrix}\right] z= ?xyvx?vy?? ?。
其非線性真實(shí)系統(tǒng)模型為:
{ z k 真 ? = f ( z k ? 1 真 ? , F k ? 1 , w k ? 1 ? ) y k 測(cè) ? = h ( z k 真 ? , v k ? ) \begin{cases}\vec{z_{k真}}=\mathrm{f}(\vec{z_{k-1真}},F_{k-1},\vec{w_{k-1}})\\\vec{y_{k測(cè)}}=\mathrm{h}(\vec{z_{k真}},\vec{v_k})\end{cases} {zk真??=f(zk?1真??,Fk?1?,wk?1??)yk測(cè)??=h(zk真??,vk??)?
因?yàn)榉蔷€性函數(shù)的期望不能用協(xié)方差矩陣描述,無(wú)法用卡爾曼濾波的套路進(jìn)行推導(dǎo),所以要進(jìn)行線性化近似,這就是擴(kuò)展卡爾曼濾波與標(biāo)準(zhǔn)卡爾曼濾波的唯一區(qū)別。
泰勒展開
擴(kuò)展卡爾曼濾波使用泰勒展開進(jìn)行線性化近似,擴(kuò)展卡爾曼濾波是一個(gè)二元向量輸入多輸出系統(tǒng),比如輸入為 [ z k ? 1 模 ? , w k ? 1 ? ] [\vec{z_{k-1模}},\vec{w_{k-1}}] [zk?1模??,wk?1??],這有兩列向量;輸出為 z k 真 ? \vec{z_{k真}} zk真??這個(gè)向量。
這里有兩個(gè)公式要提前知道:
- 單輸出的二元函數(shù)在 ( x 0 , y 0 ) (x_0,y_0) (x0?,y0?)點(diǎn)的泰勒展開公式:
f ( x , y ) = f ( x 0 , x 0 ) + d f d x ∣ x 0 , y 0 ? ( x ? x 0 ) + + d f d y ∣ x 0 , y 0 ? ( y ? y 0 ) f(x,y)=f(x_0,x_0)+\frac{df}{dx}|_{x_0,y_0}*(x-x_0)++\frac{df}{dy}|_{x_0,y_0}*(y-y_0) f(x,y)=f(x0?,x0?)+dxdf?∣x0?,y0???(x?x0?)++dydf?∣x0?,y0???(y?y0?) - 多輸出函數(shù)對(duì)輸入向量求導(dǎo)公式:
d f ? ( x ? ) d x ? = [ d f 1 d x 1 d f 1 d x 2 ? d f 1 d x m d f 2 d x 1 d f 2 d x 2 ? d f 2 d x m ? ? ? ? d f n d x 1 d f n d x 2 ? d f n d x m ] = 雅可比矩陣 \frac{d\vec{f}(\vec{x})}{d\vec{x}}=\left[\begin{matrix}\frac{d f_1}{d x_1} & \frac{d f_1}{dx_2} & \cdots & \frac{df_1}{dx_m} \\ \frac{df_2}{dx_1} & \frac{df_2}{dx_2} & \cdots & \frac{df_2}{dx_m} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{df_n}{dx_1} & \frac{df_n}{dx_2} & \cdots & \frac{df_n}{dx_m}\end{matrix}\right]=雅可比矩陣 dxdf?(x)?= ?dx1?df1??dx1?df2???dx1?dfn???dx2?df1??dx2?df2???dx2?dfn????????dxm?df1??dxm?df2???dxm?dfn??? ?=雅可比矩陣
接下來(lái)進(jìn)行泰勒展開:
記 f \mathrm{f} f對(duì) z ? \vec{z} z求導(dǎo)的雅可比矩陣為 A \mathrm{A} A, f \mathrm{f} f對(duì) w ? \vec{w} w求導(dǎo)的雅可比矩陣為 W \mathrm{W} W, h \mathrm{h} h對(duì) z ? \vec{z} z求導(dǎo)的雅可比矩陣為 H \mathrm{H} H, h \mathrm{h} h對(duì) v ? \vec{v} v求導(dǎo)的雅可比矩陣為 V \mathrm{V} V。
注意:
- F k ? 1 F_{k-1} Fk?1?是給定值而不是變量,不參與泰勒展開
- 噪聲的期望(平均值)是零,所以泰勒展開點(diǎn)的噪聲值為零
可以在任意已知點(diǎn)(比如模型值和上輪估計(jì)值都是已知的)展開,在哪個(gè)點(diǎn)展開都是為了方便推導(dǎo)。
狀態(tài)轉(zhuǎn)移方程分別在 z k ? 1 估 ? , z k 模 ? \vec{z_{k-1估}},\vec{z_{k模}} zk?1估??,zk模??處泰勒展開:
{ z k 模 ? = f ( z k ? 1 估 ? , F k ? 1 ) + A ? ( z k ? 1 模 ? ? z k ? 1 估 ? ) y k 測(cè) ? = h ( z k 模 ? ) + H ? ( z k 測(cè) ? ? z k 模 ? ) \begin{cases}\vec{z_{k模}}=f(\vec{z_{k-1估}},F_{k-1})+\mathrm{A}*(\vec{z_{k-1模}}-\vec{z_{k-1估}})\\\vec{y_{k測(cè)}}=h(\vec{z_{k模}})+\mathrm{H}*(\vec{z_{k測(cè)}}-\vec{z_{k模}})\end{cases} {zk模??=f(zk?1估??,Fk?1?)+A?(zk?1模???zk?1估??)yk測(cè)??=h(zk模??)+H?(zk測(cè)???zk模??)?
真實(shí)系統(tǒng)模型分別在 ( z k ? 1 估 ? , 0 ? ) , ( z k 模 ? , 0 ? ) (\vec{z_{k-1估}},\vec{0}),(\vec{z_{k模}},\vec{0}) (zk?1估??,0),(zk模??,0)泰勒展開:
{ z k 真 ? = f ( z k ? 1 估 ? , F k ? 1 , 0 ? ) + A ? ( z k ? 1 真 ? ? z k ? 1 估 ? ) + W ? ( w k ? 1 ? ? 0 ? ) y k 測(cè) ? = h ( z k 模 ? , 0 ? ) + H ? ( z k 真 ? ? z k 模 ? ) + V ? ( v k ? ? 0 ? ) \begin{cases}\vec{z_{k真}}=f(\vec{z_{k-1估}},F_{k-1},\vec{0})+\mathrm{A}*(\vec{z_{k-1真}}-\vec{z_{k-1估}})+\mathrm{W}*(\vec{w_{k-1}}-\vec{0})\\\vec{y_{k測(cè)}}=h(\vec{z_{k模}},\vec{0})+\mathrm{H}*(\vec{z_{k真}}-\vec{z_{k模}})+\mathrm{V}*(\vec{v_k}-\vec{0})\end{cases} {zk真??=f(zk?1估??,Fk?1?,0)+A?(zk?1真???zk?1估??)+W?(wk?1???0)yk測(cè)??=h(zk模??,0)+H?(zk真???zk模??)+V?(vk???0)?
卡爾曼濾波
線性化后,接下來(lái)的推導(dǎo)過程和標(biāo)準(zhǔn)卡爾曼濾波不能說一摸一樣,只能說九分甚至十分地相似。
這里再放一遍卡爾曼濾波核心思想:
用測(cè)量值修正系統(tǒng)模型值,得到當(dāng)前輪次的最優(yōu)估計(jì)值。再將該最優(yōu)估計(jì)值當(dāng)作下一輪的系統(tǒng)模型輸入,繼續(xù)進(jìn)行下一輪的最優(yōu)估計(jì),如此迭代進(jìn)行。
要最優(yōu)化估計(jì)值,首先把估計(jì)值表達(dá)式寫出來(lái):
z k 估 ? = z k 模 ? + G k ? ( z k 測(cè) ? ? z k 模 ? ) \begin{aligned}\vec{z_{k估}}&=\vec{z_{k模}}+\mathrm{G_k}*(\vec{z_{k測(cè)}}-\vec{z_{k模}})&\end{aligned} zk估???=zk模??+Gk??(zk測(cè)???zk模??)??
對(duì) G \mathrm{G} G矩陣進(jìn)行一個(gè)變換,變出一個(gè) y k 測(cè) ? \vec{y_{k測(cè)}} yk測(cè)??出來(lái),方便推導(dǎo),令 G = K ? H \mathrm{G}=\mathrm{K}*\mathrm{H} G=K?H,于是估計(jì)值表達(dá)式變?yōu)?#xff1a;
z k 估 ? = z k 模 ? + K k ? H ? ( z k 測(cè) ? ? z k 模 ? ) = z k 模 ? + K k ? ( y k 測(cè) ? ? H ? z k 模 ? ) \begin{aligned}\vec{z_{k估}}&=\vec{z_{k模}}+\mathrm{K_k}*\mathrm{H}*(\vec{z_{k測(cè)}}-\vec{z_{k模}})\\&=\vec{z_{k模}}+\mathrm{K_k}*(\vec{y_{k測(cè)}}-\mathrm{H}*\vec{z_{k模}})\end{aligned} zk估???=zk模??+Kk??H?(zk測(cè)???zk模??)=zk模??+Kk??(yk測(cè)???H?zk模??)?
卡爾曼增益
z k 估 ? \vec{z_{k估}} zk估??表達(dá)式右側(cè)除了 K k \mathrm{K_k} Kk?不知道,其他都是已知數(shù),繼續(xù)推導(dǎo) K k \mathrm{K_k} Kk?吧。那么就是推導(dǎo)最優(yōu)估計(jì)下的 K k \mathrm{K_k} Kk?,就是使得估計(jì)誤差協(xié)方差矩陣的跡最小,先把估計(jì)誤差協(xié)方差矩陣寫出來(lái):
P k 估 = E [ e k 估 ? e k 估 ? T ] = E [ ( z k 真 ? ? z k 估 ? ) ? ( z k 真 ? ? z k 估 ? ) T ] \begin{aligned}\mathrm{P_{k估}}&=E[\vec{e_{k估}}\vec{e_{k估}}^T]\\&=E[(\vec{z_{k真}}-\vec{z_{k估}})*(\vec{z_{k真}}-\vec{z_{k估}})^T]\end{aligned} Pk估??=E[ek估??ek估??T]=E[(zk真???zk估??)?(zk真???zk估??)T]?
展開一下 z k 真 ? ? z k 估 ? \vec{z_{k真}}-\vec{z_{k估}} zk真???zk估??:
z k 真 ? ? z k 估 ? = z k 真 ? ? z k 模 ? ? K k ? ( y k 測(cè) ? ? h ( z k 模 ? ) ) = e k 模 ? ? K k ? ( h ( z k 模 ? , 0 ) + H ? ( z k 真 ? ? z k 模 ? ) + V ? v k ? ? h ( z k 模 ? ) ) = e k 模 ? ? K k ? ( H ? e k 模 ? + V ? v k ? ) = ( I ? K k H ) e k 模 ? ? K k V ? v k ? \begin{aligned}\vec{z_{k真}}-\vec{z_{k估}}&=\vec{z_{k真}}-\vec{z_{k模}}-\mathrm{K_k}*(\vec{y_{k測(cè)}}-\mathrm{h}(\vec{z_{k模}}))\\&=\vec{e_{k模}}-\mathrm{K_k}*(h(\vec{z_{k模}},0)+\mathrm{H}*(\vec{z_{k真}}-\vec{z_{k模}})+\mathrm{V}*\vec{v_k}-h(\vec{z_{k模}}))\\&=\vec{e_{k模}}-\mathrm{K_k}*(\mathrm{H}*\vec{e_{k模}}+\mathrm{V}*\vec{v_k})\\&=(\mathrm{I}-\mathrm{K_k}\mathrm{H})\vec{e_{k模}}-\mathrm{K_k}\mathrm{V}*\vec{v_k}\end{aligned} zk真???zk估???=zk真???zk模???Kk??(yk測(cè)???h(zk模??))=ek模???Kk??(h(zk模??,0)+H?(zk真???zk模??)+V?vk???h(zk模??))=ek模???Kk??(H?ek模??+V?vk??)=(I?Kk?H)ek模???Kk?V?vk???
P k 估 \mathrm{P_{k估}} Pk估?可以繼續(xù)展開了:
P k 估 = E [ ( ( I ? K k H ) e k 模 ? ? K k V ? v k ? ) ? ( ( I ? K k H ) e k 模 ? ? K k V ? v k ? ) T ] = E [ ( ( I ? K k H ) e k 模 ? ? K k V ? v k ? ) ? ( e k 模 ? T ( I ? K k H ) T ? v k ? T V T K k T ) ] \begin{aligned}\mathrm{P_{k估}}&=E[((\mathrm{I}-\mathrm{K_k}\mathrm{H})\vec{e_{k模}}-\mathrm{K_k}\mathrm{V}*\vec{v_k})*((\mathrm{I}-\mathrm{K_k}\mathrm{H})\vec{e_{k模}}-\mathrm{K_k}\mathrm{V}*\vec{v_k})^T]\\&=E[((\mathrm{I}-\mathrm{K_k}\mathrm{H})\vec{e_{k模}}-\mathrm{K_k}\mathrm{V}*\vec{v_k})*(\vec{e_{k模}}^T(\mathrm{I}-\mathrm{K_k}\mathrm{H})^T-\vec{v_k}^T\mathrm{V}^T\mathrm{K_k}^T)]\end{aligned} Pk估??=E[((I?Kk?H)ek模???Kk?V?vk??)?((I?Kk?H)ek模???Kk?V?vk??)T]=E[((I?Kk?H)ek模???Kk?V?vk??)?(ek模??T(I?Kk?H)T?vk??TVTKk?T)]?
接下來(lái)將括號(hào)乘開。這里有兩點(diǎn)有助于化簡(jiǎn):噪聲 v k ? \vec{v_k} vk??的期望是零,又與 e k 模 ? \vec{e_{k模}} ek模??相互獨(dú)立,所以 v k ? \vec{v_k} vk??和 e k 模 ? \vec{e_{k模}} ek模??搭邊的項(xiàng)都是零。
P k 估 = E [ ( I ? K k H ) e k 模 ? e k 模 ? T ( I ? K k H ) T + K k V ? v k ? v k ? T V T K k T ] = ( I ? K k H ) P k 模 ( I ? K k H ) T + K k V R V T K k T \begin{aligned}\mathrm{P_{k估}}&=E[(\mathrm{I}-\mathrm{K_k}\mathrm{H})\vec{e_{k模}}\vec{e_{k模}}^T(\mathrm{I}-\mathrm{K_k}\mathrm{H})^T+\mathrm{K_k}\mathrm{V}*\vec{v_k}\vec{v_k}^T\mathrm{V}^T\mathrm{K_k}^T]\\&=(\mathrm{I}-\mathrm{K_k}\mathrm{H})\mathrm{P_{k模}}(\mathrm{I}-\mathrm{K_k}\mathrm{H})^T+\mathrm{K_k}\mathrm{V}\mathrm{R}\mathrm{V}^T\mathrm{K_k}^T\end{aligned} Pk估??=E[(I?Kk?H)ek模??ek模??T(I?Kk?H)T+Kk?V?vk??vk??TVTKk?T]=(I?Kk?H)Pk模?(I?Kk?H)T+Kk?VRVTKk?T?
P k 估 \mathrm{P_{k估}} Pk估?的表達(dá)式也出來(lái)了, K k \mathrm{K_k} Kk?是自變量,想讓 t r ( P k 估 ) tr(\mathrm{P_{k估}}) tr(Pk估?)最小,即最優(yōu)估計(jì)。由于 t r ( P k 估 ) tr(\mathrm{P_{k估}}) tr(Pk估?)是二次函數(shù),開口向上,極值點(diǎn)必定是極小值點(diǎn),于是接下來(lái)準(zhǔn)備 t r ( P k 估 ) d K k = 0 \frac{tr(\mathrm{P_{k估}})}{d\mathrm{K_k}}=0 dKk?tr(Pk估?)?=0。在算極值點(diǎn)前,有個(gè)矩陣求導(dǎo)公式需要提前知道:
d t r ( A B A T ) d A = 2 A B \frac{dtr(ABA^T)}{d\mathrm{A}}=2AB dAdtr(ABAT)?=2AB
這個(gè)求導(dǎo)公式結(jié)合鏈?zhǔn)角髮?dǎo)法則,就可以進(jìn)行求極值點(diǎn)了,注意 V R V T \mathrm{V}\mathrm{R}\mathrm{V}^T VRVT看作一個(gè)整體:
d P k 估 d K k = 2 ( I ? K k H ) P k 模 ( ? H T ) + 2 K k V R V T = 0 \begin{aligned}\frac{d\mathrm{P_{k估}}}{d\mathrm{K_k}}&=2(\mathrm{I}-\mathrm{K_k}\mathrm{H})\mathrm{P_{k模}}(-\mathrm{H}^T)+2\mathrm{K_k}\mathrm{V}\mathrm{R}\mathrm{V}^T\\&=0\end{aligned} dKk?dPk估???=2(I?Kk?H)Pk模?(?HT)+2Kk?VRVT=0?
K k \mathrm{K_k} Kk?這不就出來(lái)了,和標(biāo)準(zhǔn)卡爾曼濾波里的 K k \mathrm{K_k} Kk?挺像的:
K k = P k 模 H T H P k 模 H T + V R V T \mathrm{K_k}=\frac{\mathrm{P_{k模}}\mathrm{H}^T}{\mathrm{H}\mathrm{P_{k模}}\mathrm{H}^T+\mathrm{V}\mathrm{R}\mathrm{V}^T} Kk?=HPk模?HT+VRVTPk模?HT?
模型誤差協(xié)方差矩陣
和標(biāo)準(zhǔn)卡爾曼濾波的推導(dǎo)套路一樣,繼續(xù)推導(dǎo) P k 模 \mathrm{P_{k模}} Pk模?。
先把表達(dá)式搞出來(lái):
P k 模 = E [ e k 模 ? e k 模 ? T ] = E [ ( z k 真 ? ? z k 模 ? ) ? ( z k 真 ? ? z k 模 ? ) T ] \begin{aligned}\mathrm{P_{k模}}&=E[\vec{e_{k模}}\vec{e_{k模}}^T]\\&=E[(\vec{z_{k真}}-\vec{z_{k模}})*(\vec{z_{k真}}-\vec{z_{k模}})^T]\end{aligned} Pk模??=E[ek模??ek模??T]=E[(zk真???zk模??)?(zk真???zk模??)T]?
展開一下 z k 真 ? ? z k 模 ? \vec{z_{k真}}-\vec{z_{k模}} zk真???zk模??:
z k 真 ? ? z k 模 ? = f ( z k ? 1 估 ? , F k ? 1 , 0 ) + A ? ( z k ? 1 真 ? ? z k ? 1 估 ? ) + W ? w k ? 1 ? ? ( f ( z k ? 1 估 ? , F k ? 1 ) + A ? ( z k ? 1 模 ? ? z k ? 1 估 ? ) ) = A ( z k ? 1 真 ? ? z k ? 1 估 ? ) + W ? w k ? 1 ? = A e k 估 ? + W w k ? 1 ? \begin{aligned}\vec{z_{k真}}-\vec{z_{k模}}&=f(\vec{z_{k-1估}},F_{k-1},0)+\mathrm{A}*(\vec{z_{k-1真}}-\vec{z_{k-1估}})+\mathrm{W}*\vec{w_{k-1}}-(f(\vec{z_{k-1估}},F_{k-1})+\mathrm{A}*(\vec{z_{k-1模}}-\vec{z_{k-1估}}))\\&=\mathrm{A}(\vec{z_{k-1真}}-\vec{z_{k-1估}})+\mathrm{W}*\vec{w_{k-1}}\\&=\mathrm{A}\vec{e_{k估}}+\mathrm{W}\vec{w_{k-1}}\end{aligned} zk真???zk模???=f(zk?1估??,Fk?1?,0)+A?(zk?1真???zk?1估??)+W?wk?1???(f(zk?1估??,Fk?1?)+A?(zk?1模???zk?1估??))=A(zk?1真???zk?1估??)+W?wk?1??=Aek估??+Wwk?1???
P k 模 \mathrm{P_{k模}} Pk模?繼續(xù)展開,展開后的表達(dá)式和標(biāo)準(zhǔn)卡爾曼濾波里的 P k 模 \mathrm{P_{k模}} Pk模?也挺像的:
P k 模 = E [ ( A e k ? 1 估 ? + W w k ? 1 ? ) ? ( A e k ? 1 估 ? + W w k ? 1 ? ) T ] = E [ ( A e k ? 1 估 ? + W w k ? 1 ? ) ? ( e k ? 1 估 ? T A T + w k ? 1 ? T W T ) ] = E [ A e k ? 1 估 ? e k ? 1 估 ? T A T + W w k ? 1 ? w k ? 1 ? T W T ] = A E [ e k ? 1 估 ? e k ? 1 估 ? T ] A T + W E [ w k ? 1 ? w k ? 1 ? T ] W T = A P k ? 1 估 A T + W Q W T \begin{aligned}\mathrm{P_{k模}}&=E[(\mathrm{A}\vec{e_{k-1估}}+\mathrm{W}\vec{w_{k-1}})*(\mathrm{A}\vec{e_{k-1估}}+\mathrm{W}\vec{w_{k-1}})^T]\\&=E[(\mathrm{A}\vec{e_{k-1估}}+\mathrm{W}\vec{w_{k-1}})*(\vec{e_{k-1估}}^T\mathrm{A}^T+\vec{w_{k-1}}^T\mathrm{W}^T)]\\&=E[\mathrm{A}\vec{e_{k-1估}}\vec{e_{k-1估}}^T\mathrm{A}^T+\mathrm{W}\vec{w_{k-1}}\vec{w_{k-1}}^T\mathrm{W}^T]\\&=\mathrm{A}E[\vec{e_{k-1估}}\vec{e_{k-1估}}^T]\mathrm{A}^T+\mathrm{W}E[\vec{w_{k-1}}\vec{w_{k-1}}^T]\mathrm{W}^T\\&=\mathrm{A}\mathrm{P_{k-1估}}\mathrm{A}^T+\mathrm{W}\mathrm{Q}\mathrm{W}^T\end{aligned} Pk模??=E[(Aek?1估??+Wwk?1??)?(Aek?1估??+Wwk?1??)T]=E[(Aek?1估??+Wwk?1??)?(ek?1估??TAT+wk?1??TWT)]=E[Aek?1估??ek?1估??TAT+Wwk?1??wk?1??TWT]=AE[ek?1估??ek?1估??T]AT+WE[wk?1??wk?1??T]WT=APk?1估?AT+WQWT?
P k ? 1 估 \mathrm{P_{k-1估}} Pk?1估?表達(dá)式在上面推導(dǎo)過了,只不過 k k k換成 k ? 1 k-1 k?1:
表達(dá)式: P k ? 1 估 = ( I ? K k ? 1 H ) P k ? 1 模 ( I ? H T K k ? 1 T ) + K k ? 1 V R V T K k ? 1 T , K k ? 1 = P k ? 1 模 H T H P k ? 1 模 H T + V R V T 表達(dá)式:\mathrm{P_{k-1估}}=(\mathrm{I}-\mathrm{K_{k-1}}\mathrm{H})\mathrm{P_{k-1模}}(\mathrm{I}-\mathrm{H}^T\mathrm{K_{k-1}}^T)+\mathrm{K_{k-1}}\mathrm{V}\mathrm{R}\mathrm{V}^T\mathrm{K_{k-1}}^T,\mathrm{K_{k-1}}=\frac{\mathrm{P_{k-1模}}\mathrm{H}^T}{\mathrm{H}\mathrm{P_{k-1模}}\mathrm{H}^T+\mathrm{V}\mathrm{R}\mathrm{V}^T} 表達(dá)式:Pk?1估?=(I?Kk?1?H)Pk?1模?(I?HTKk?1?T)+Kk?1?VRVTKk?1?T,Kk?1?=HPk?1模?HT+VRVTPk?1模?HT?
把 K k ? 1 \mathrm{K_{k-1}} Kk?1?代到 P k ? 1 估 \mathrm{P_{k-1估}} Pk?1估?表達(dá)式里就得到 P k ? 1 估 \mathrm{P_{k-1估}} Pk?1估?的具體值,你完全可以將 K k ? 1 \mathrm{K_{k-1}} Kk?1?直接無(wú)腦代入 P k ? 1 估 \mathrm{P_{k-1估}} Pk?1估?的表達(dá)式,畢竟 P k ? 1 估 \mathrm{P_{k-1估}} Pk?1估?等式右邊全是上輪迭代得到的已知數(shù),但是 P k ? 1 估 \mathrm{P_{k-1估}} Pk?1估?可以進(jìn)行化簡(jiǎn)減少計(jì)算量:
P k ? 1 估 = ( P k ? 1 模 ? K k ? 1 H P k ? 1 模 ? P k ? 1 模 H T K k ? 1 T + K k ? 1 H P k ? 1 模 H T K k ? 1 T ) + K k ? 1 V R V T K k ? 1 T = ( P k ? 1 模 ? K k ? 1 H P k ? 1 模 ? P k ? 1 模 H T K k ? 1 T ) + K k ? 1 ( H P k ? 1 模 H T + V R V T ) K k ? 1 T = ( P k ? 1 模 ? K k ? 1 H P k ? 1 模 ? P k ? 1 模 H T K k ? 1 T ) + P k ? 1 模 H T K k ? 1 T = P k ? 1 模 ? K k ? 1 H P k ? 1 模 = ( I ? K k ? 1 H ) P k ? 1 模 \begin{aligned}\mathrm{P_{k-1估}}&=(\mathrm{P_{k-1模}}-\mathrm{K_{k-1}}\mathrm{H}\mathrm{P_{k-1模}}-\mathrm{P_{k-1模}}\mathrm{H}^T\mathrm{K_{k-1}}^T+\mathrm{K_{k-1}}\mathrm{H}\mathrm{P_{k-1模}}\mathrm{H}^T\mathrm{K_{k-1}}^T)+\mathrm{K_{k-1}}\mathrm{V}\mathrm{R}\mathrm{V}^T\mathrm{K_{k-1}}^T\\&=(\mathrm{P_{k-1模}}-\mathrm{K_{k-1}}\mathrm{H}\mathrm{P_{k-1模}}-\mathrm{P_{k-1模}}\mathrm{H}^T\mathrm{K_{k-1}}^T)+\mathrm{K_{k-1}}(\mathrm{H}\mathrm{P_{k-1模}}\mathrm{H}^T+\mathrm{V}\mathrm{R}\mathrm{V}^T)\mathrm{K_{k-1}}^T\\&=(\mathrm{P_{k-1模}}-\mathrm{K_{k-1}}\mathrm{H}\mathrm{P_{k-1模}}-\mathrm{P_{k-1模}}\mathrm{H}^T\mathrm{K_{k-1}}^T)+\mathrm{P_{k-1模}}\mathrm{H}^T\mathrm{K_{k-1}}^T\\&=\mathrm{P_{k-1模}}-\mathrm{K_{k-1}}\mathrm{H}\mathrm{P_{k-1模}}\\&=(\mathrm{I}-\mathrm{K_{k-1}}\mathrm{H})\mathrm{P_{k-1模}}\end{aligned} Pk?1估??=(Pk?1模??Kk?1?HPk?1模??Pk?1模?HTKk?1?T+Kk?1?HPk?1模?HTKk?1?T)+Kk?1?VRVTKk?1?T=(Pk?1模??Kk?1?HPk?1模??Pk?1模?HTKk?1?T)+Kk?1?(HPk?1模?HT+VRVT)Kk?1?T=(Pk?1模??Kk?1?HPk?1模??Pk?1模?HTKk?1?T)+Pk?1模?HTKk?1?T=Pk?1模??Kk?1?HPk?1模?=(I?Kk?1?H)Pk?1模??
又是和標(biāo)準(zhǔn)卡爾曼濾波里的 P k ? 1 估 \mathrm{P_{k-1估}} Pk?1估?長(zhǎng)得挺像的。
這樣擴(kuò)展卡爾曼濾波的公式全推導(dǎo)完了。
公式總結(jié)
- z k 模 ? = f ( z k ? 1 模 ? , F k ? 1 ) \vec{z_{k模}}=\mathrm{f}(\vec{z_{k-1模}},F_{k-1}) zk模??=f(zk?1模??,Fk?1?)
- P k 模 = A P k ? 1 估 A T + W Q W T \mathrm{P_{k模}}=\mathrm{A}\mathrm{P_{k-1估}}\mathrm{A}^T+\mathrm{W}\mathrm{Q}\mathrm{W}^T Pk模?=APk?1估?AT+WQWT
- K k = P k 模 H T H P k 模 H T + V R V T \mathrm{K_k}=\frac{\mathrm{P_{k模}}\mathrm{H}^T}{\mathrm{H}\mathrm{P_{k模}}\mathrm{H}^T+\mathrm{V}\mathrm{R}\mathrm{V}^T} Kk?=HPk模?HT+VRVTPk模?HT?
- z k 估 ? = z k 模 ? + K k ? ( y k 測(cè) ? ? h ( z k 模 ? ) ) \vec{z_{k估}}=\vec{z_{k模}}+\mathrm{K_k}*(\vec{y_{k測(cè)}}-\mathrm{h}(\vec{z_{k模}})) zk估??=zk模??+Kk??(yk測(cè)???h(zk模??))
- P k 估 = ( I ? K k H ) P k 模 \mathrm{P_{k估}}=(\mathrm{I}-\mathrm{K_k}\mathrm{H})\mathrm{P_{k模}} Pk估?=(I?Kk?H)Pk模?
大致迭代過程和標(biāo)準(zhǔn)卡爾曼濾波一樣,這五個(gè)公式按照順序遍歷計(jì)算。要注意的是標(biāo)準(zhǔn)卡爾曼濾波的 A , V , W \mathrm{A},\mathrm{V},\mathrm{W} A,V,W都是固定的矩陣,而擴(kuò)展卡爾曼濾波中的 A , V , W \mathrm{A},\mathrm{V},\mathrm{W} A,V,W是雅可比矩陣,每次迭代過程中都需要更新計(jì)算一次。