目标跟踪—卡尔曼滤波

目标跟踪—卡尔曼滤波

卡尔曼滤波引入

在这里插入图片描述

滤波是将信号中特定波段频率滤除的操作,是抑制和防止干扰的一项重要措施。是根据观察某一随机过程的结果,对另一与之有关的随机过程进行估计的概率理论与方法。

历史上最早考虑的是维纳滤波,后来R.E.卡尔曼和R.S.布西于20世纪60年代提出了卡尔曼滤波。现对一般的非线性滤波问题的研究相当活跃。

简单的理解滤波的作用是处理高斯噪声使得数据变得更加的平滑

适用系统

适用系统线性高斯系统:线性满足:叠加性齐次性即为:
y = a x 1 + b x 2 y=a x_{1}+b x_{2} y=ax1+bx2

高斯:噪声满足高斯分布。

一般情况下的理想状态为: 信号 x 1 + 噪声 x 0 在使用卡尔曼滤波的情况下。修正值= w1 x 估计值 + w2 x 观察值。

且满足 w1+ w2 = 1的条件

卡尔曼滤波基础准备

状态空间表达式

状态方程:

x k = A x k − 1 + B u k + ω k {x_{k}}=A x_{k-1}+B u_{k}+\omega_{k} xk=Axk1+Buk+ωk

  • xk:表示当前状态的当前值 K代表当前的状态信息
  • xk-1:表示上一个状态的当前值 K-1代表上一个状态信息
  • wk:表示过程噪声
  • uk:表示的是一个输入信息
  • A: 表示的是一个状态转移矩阵
  • B: 表示的是一个控制矩阵

观测方程:
y k = C x k + v k y_{k}=C x_{k}+v_{k} yk=Cxk+vk

  • yk:表示要观测的值
  • vk:表示一个过程噪声(与观察器误差有关可以简单理解为误差)
  • xk:表示当前状态的当前值 K代表当前的状态信息

参数分析

高斯白噪声:满足期望为0的高斯分布

w k ∈ N ( 0 ; Q k ) V k ∈ N ( 0 ; R k ) \begin{array}{l} w_{k} \in N\left(0 ; Q_{k}\right) \\ V_{k} \in N\left(0 ; R_{k}\right) \end{array} wkN(0;Qk)VkN(0;Rk)

其中Q:代表过程噪声的方差,R:代表观测噪声的方差。是在算法实现过程中的超参数

下面是卡尔曼滤波的直观图解
在这里插入图片描述

在这里插入图片描述

卡尔曼滤波的理论

卡尔曼滤波的理解:

实现过程: 使用上一次的最优结果预测当前的值,同时使用观测值****修正当前值,得到最优结果(可以简单理解为是一个递归的过程)

  1. 在预测过程中使用到的公式
    x ^ t − = F x ^ t − 1 + B u t − 1 P t − = F P t − 1 F T + Q \begin{array}{l} \hat{x}_{t}^{-}=F \hat{x}_{t-1}+B u_{t-1} \\ P_{t}^{-}=F P_{t-1} F^{T}+Q \end{array} x^t=Fx^t1+But1Pt=FPt1FT+Q

其中P(t)对应的是x的协方差矩阵,而其中的x-表示的就是一个预测估计

  1. 在更新过程中使用到的公式
    K t = P t − H T ( H P t − H T + R ) − 1 x ^ t = x ^ t − + K t ( z t − H x ^ t − ) P t = ( I − K t H ) P t − \begin{array}{l} K_{t}=P_{t}^{-} H^{T}\left(H P_{t}^{-} H^{T}+R\right)^{-1} \\ \hat{x}_{t}=\hat{x}_{t}^{-}+K_{t}\left(z_{t}-H \hat{x}_{t}^{-}\right) \\ P_{t}=\left(I-K_{t} H\right) P_{t}^{-} \end{array} Kt=PtHT(HPtHT+R)1x^t=x^t+Kt(ztHx^t)Pt=(IKtH)Pt

z(t)表示的就是一个观测值 K:表示的是卡尔曼增益,在更新的过程中就涉及到了预测值的更新,与协方差矩阵的更新

先验估计的简单理解

x ^ t − = F x ^ t − 1 + B u t − 1 \hat{x}_{t}^{-}=F \hat{x}_{t-1}+B u_{t-1} \\ x^t=Fx^t1+But1

其中的F即为状态转移矩阵 B即为控制矩阵

首先以匀加速直线运动为例化为状态方程的形式来进行表示
P i = P i − 1 + v i − 1 ⋅ Δ t + a 2 Δ t 2 v i = v i − 1 + a ⋅ Δ t } ⇒ [ p i v i ] = [ 1 Δ t 0 1 ] [ p i − 1 v i − 1 ] + [ Δ t 2 2 Δ t ] a i \left.\begin{array}{l} P_{i}=P_{i-1}+v_{i-1} \cdot \Delta t+\frac{a}{2} \Delta t^{2} \\ v_{i}=v_{i-1}+a \cdot \Delta t \end{array}\right\} \Rightarrow\left[\begin{array}{l} p_{i} \\ v_{i} \end{array}\right]=\left[\begin{array}{cc} 1 & \Delta t \\ 0 & 1 \end{array}\right]\left[\begin{array}{l} p_{i-1} \\ v_{i-1} \end{array}\right]+\left[\begin{array}{c} \frac{\Delta t^{2}}{2} \\ \Delta t \end{array}\right] a_{i} Pi=Pi1+vi1Δt+2aΔt2vi=vi1+aΔt}[pivi]=[10Δt1][pi1vi1]+[2Δt2Δt]ai

先验估计的协方差

P t − = F P t − 1 F T + Q P_{t}^{-}=F P_{t-1} F^{T}+Q Pt=FPt1FT+Q

根据先验估计得到协方差的推导过程如下:

cov ⁡ ( x ^ t − , x ^ t − ) = cov ⁡ ( F x ^ t − 1 + B u t − 1 , F x ^ t − 1 + B u t − 1 ) + Q = F cov ⁡ ( x ^ t − 1 , x ^ t − 1 ) F ⊤ + Q \begin{array}{l} \operatorname{cov}\left(\hat{x}_{t}^{-}, \hat{x}_{t^{-}}\right)=\operatorname{cov}\left(F \hat{x}_{t-1}+B u_{t-1}, F \hat{x}_{t-1}+B u_{t-1}\right) \\ +Q=F \operatorname{cov}\left(\hat{x}_{t-1}, \hat{x}_{t-1}\right) F^{\top} +Q \\ \end{array} cov(x^t,x^t)=cov(Fx^t1+But1,Fx^t1+But1)+Q=Fcov(x^t1,x^t1)F+Q
从而得到了先验估计协方差的形式(带过程噪声的形式)

状态更新

通过修正估计得到卡尔曼滤波的最终值(最终滤波结果)

x ^ t = x ^ t − + K t ( z t − H x ^ t − ) P t = ( I − K t H ) P t − \hat{x}_{t}=\hat{x}_{t}^{-}+K_{t}\left(z_{t}-H \hat{x}_{t}^{-}\right) \\ P_{t}=\left(I-K_{t} H\right) P_{t}^{-} x^t=x^t+Kt(ztHx^t)Pt=(IKtH)Pt

核心需要用到卡尔曼增益与测量值,需要计算测量值-预测值*H
其中H表示观测矩阵的值

其中卡尔曼增益的表示形式为:

K t = p t − H ⊤ H p t − H ⊤ + R K_{t}=\frac{p_{t}^{-} H^{\top}}{H p_{t}^{-} H^{\top}+R} Kt=HptH+RptH

根据观测值和预测值的噪声调节对应的权重值k
P t − = F P t − 1 F − 1 + Q k = P t − H ⊤ H P t − H ⊤ + R } → 化简  k = P t − 1 + Q P t − 1 + Q + R \left.\begin{array}{l} P_{t}^{-}=F P_{t-1} F^{-1}+Q \\ k=\frac{P_{t}^{-} H^{\top}}{H P_{t}^{-} H^{\top}+R} \end{array}\right\} \xrightarrow{\text { 化简 }} k=\frac{P_{t-1}+Q}{P_{t-1}+Q+R} Pt=FPt1F1+Qk=HPtH+RPtH} 化简  k=Pt1+Q+RPt1+Q

卡尔曼滤波推导

首先建立已知的现实空间中的状态空间:

x k = A x k − 1 + B u k − 1 + w k − 1 , P ( w ) ∼ ( 0 , Q ) , Q = E [ w w T ] z k = H x k + v k , P ( v ) ∼ ( 0 , R ) E [ w w T ] = E [ ( w 1 w 2 ) ( w 1 w 2 ) ] = [ E ( w 1 2 ) E ( w 1 w 2 ) E ( w 1 w 2 ) E ( w 2 2 ) ] = [ σ ( w 1 2 ) σ ( w 1 w 2 ) σ ( w 1 w 2 ) σ ( w 2 2 ) ] \begin{array}{c} x_{k}=A x_{k-1}+B u_{k-1}+w_{k-1}, \mathrm{P}(\mathrm{w}) \sim(0, \mathrm{Q}), \mathrm{Q}=\mathrm{E}\left[\mathrm{w} w^{T}\right] \\ z_{k}=H x_{k}+v_{k}, \mathrm{P}(\mathrm{v}) \sim(0, \mathrm{R}) \\ \mathrm{E}\left[\mathrm{w} w^{T}\right]=\mathrm{E}\left[\binom{w_{1}}{w_{2}}\left(\begin{array}{ll} w_{1} & \left.w_{2}\right) \end{array}\right]=\left[\begin{array}{cc} E\left(w_{1}^{2}\right) & E\left(w_{1} w_{2}\right) \\ E\left(w_{1} w_{2}\right) & E\left(w_{2}{ }^{2}\right) \end{array}\right]=\left[\begin{array}{cc} \sigma\left(w_{1}^{2}\right) & \sigma\left(w_{1} w_{2}\right) \\ \sigma\left(w_{1} w_{2}\right) & \sigma\left(w_{2}^{2}\right) \end{array}\right]\right. \end{array} xk=Axk1+Buk1+wk1,P(w)(0,Q),Q=E[wwT]zk=Hxk+vk,P(v)(0,R)E[wwT]=E[(w2w1)(w1w2)]=[E(w12)E(w1w2)E(w1w2)E(w22)]=[σ(w12)σ(w1w2)σ(w1w2)σ(w22)]

其中核心在于Q表示的是协方差矩阵,可以通过w向量的形式写成,协方差矩阵的形式

同理vk也符合同样的分布模型

实际的状态空间模型

x ^ k ′ = A x ^ k − 1 + B u k − 1 z k = H x k → x ^ k = H ′ z k ′ \begin{array}{c} \hat{x}_{k}{ }^{\prime}=A \widehat{x}_{k-1}+B u_{k-1} \\ z_{k}=H x_{k} \rightarrow \widehat{x}_{k}=H^{\prime} z_{k^{\prime}} \end{array} x^k=Ax k1+Buk1zk=Hxkx k=Hzk

我们建模中不知道的便是 ω \omega ω v v v , 其余的矩阵是已知的, 而我们通过 X k = A X k − 1 + B U k − 1 X_{k}=A X_{k-1}+B U_{k-1} Xk=AXk1+BUk1 这个公式得到的 X ^ k \hat{X}_{k} X^k 其实是不正确的,在这里在上面增加一个小小的负号, 表明它是先验估计值。
X ^ k − = A X ^ k − 1 + B U k − 1 , ( 这里的 X ^ k − 1 也是估计值 ) \hat{X}_{k}^{-}=A \widehat{X}_{k-1}+B U_{k-1} , (这里的 \widehat{X}_{k-1} 也是估计值) X^k=AX k1+BUk1,(这里的X k1也是估计值)
由于我们是知道测试结果(测量得到) Z k , Z_{k} , Zk,
那么在不考虑测量噪音的情况下, 可以大体得到一个估计的 X ^ k \hat{X}_{k} X^k ,
那么我们令这个估计的 X ^ k 命名为 X ^ k m \hat{X}_{k} 命名为 \hat{X}_{k_{m}} X^k命名为X^km , 表示这是根据测试结果估计得到的 X ^ k \hat{X}_{k} X^k
那么, 根据公式 Z k = H X ^ k Z_{k}=H \hat{X}_{k} Zk=HX^k , 可以得到
X ^ k mea  = H − 1 Z k , ( 由于是可以观测的系统 , 因此 H 一定是可逆的 ) \hat{X}_{k_{\text {mea }}}=H^{-1} Z_{k} , (由于是可以观测的系统, 因此 \mathrm{H} 一定是可逆的) X^kmea =H1Zk,(由于是可以观测的系统,因此H一定是可逆的)

因此我们得到了两个不同的关于Xk的结果,一个是先验结果xk-(算出来的),另一个是测出来的结果xkmca(测出来的),但是着两个其实都是不准确的,因为其没有考虑噪声的影响我们真正要求的是xk(表示后验),包含了噪声的影响。

引入数据融合的概念

结合数据融合的概念可以得到

已知 X ^ k − , X ^ k mea  那么 X ^ k = X ^ k − + G ( X ^ k mea  − X ^ k − ) , ( G 是方阵也就是要推导和卡尔曼增益 ) 已知 \hat{X}_{k}{ }^{-}, \hat{X}_{k_{\text {mea }}} 那么 \hat{X}_{k}=\hat{X}_{k}^{-}+G\left(\hat{X}_{k_{\text {mea }}}-\hat{X}_{k}^{-}\right),(\mathrm{G} 是方阵 也就是要推导和卡尔曼增益 ) 已知X^k,X^kmea 那么X^k=X^k+G(X^kmea X^k),(G是方阵也就是要推导和卡尔曼增益)

X ^ k mea  = H − 1 Z k , 那么 X ^ k = X ^ k − + G ( H − 1 Z k − X ^ k − ) , 那么令 K k = G H − 1 , 便可以得到 X ^ k = X ^ k − + K k ( Z k − H X ^ k − ) , 那么在此时 K k ∉ ( 0 , 1 ) , 而是 K k ∉ ( 0 , H − 1 ) , \hat{X}_{k_{\text {mea }}}=H^{-1} Z_{k} , 那么 \hat{X}_{k}=\hat{X}_{k}^{-}+G\left(H^{-1} Z_{k}-\widehat{X}_{k}^{-}\right) , 那么令 K_{k}=G H^{-1} , 便可以得到 \hat{X}_{k}=\hat{X}_{k}^{-}+K_{k}\left(Z_{k}-H \hat{X}_{k}{ }^{-}\right) , 那么在此时 K_{k} \notin(0,1) , 而是 K_{k} \notin\left(0, H^{-1}\right) , X^kmea =H1Zk,那么X^k=X^k+G(H1ZkX k),那么令Kk=GH1,便可以得到X^k=X^k+Kk(ZkHX^k),那么在此时Kk/(0,1),而是Kk/(0,H1),

推导卡尔曼增益

因此我们的目标就变得十分清晰了,就是求使得考虑了噪声之后的估计值趋近于真实值,

那么此时引入误差: e k = X k − X ^ k e_{k}=X_{k}-\hat{X}_{k} ek=XkX^k

同理P  ( e k ) ∼ ( 0 , P ) , P 也是那个协方差矩阵  \text { 同理P }\left(e_{k}\right) \sim(0, P), P \text { 也是那个协方差矩阵 }  同理(ek)(0,P),P 也是那个协方差矩阵 

而当在不同的维度上的方差越小,那么说明这个e越接近0,因此估计值和真实值也就是最相近的。所以,要选择合适的K使得tr(P)(矩阵对角线相加)最小,那么优化问题就变成了下面这个公式。

P = E ( e k e k T ) = E ( ( X k − X ^ k ) ( X k − X ^ k ) T ) , 将  X ^ k = X ^ k − + K k ( Z k − H X ^ k − ) 代入,  可以得到  P = E ( ( X k − ( X ^ k − + K k ( Z k − H X ^ k − ) ) ) ( X k − ( X ^ k − + K k ( Z k − H X ^ k − ) ) ) T ) ,  \begin{array}{l} \mathrm{P}=\mathrm{E}\left(e_{k} e_{k}{ }^{T}\right)=\mathrm{E}\left(\left(X_{k}-\hat{X}_{k}\right)\left(X_{k}-\hat{X}_{k}\right)^{T}\right), \\ \text { 将 } \hat{X}_{k}=\hat{X}_{k}^{-}+K_{k}\left(Z_{k}-H \hat{X}_{k}^{-}\right) \text {代入, } \\ \text { 可以得到 } \mathrm{P}=\mathrm{E}\left(\left(X_{k}-\left(\hat{X}_{k}^{-}+K_{k}\left(Z_{k}-H \hat{X}_{k}^{-}\right)\right)\right)\left(X_{k}-\left(\hat{X}_{k}^{-}+K_{k}\left(Z_{k}-H \hat{X}_{k}^{-}\right)\right)\right)^{T}\right) \text {, } \\ \end{array} P=E(ekekT)=E((XkX^k)(XkX^k)T),  X^k=X^k+Kk(ZkHX^k)代入 可以得到 P=E((Xk(X^k+Kk(ZkHX^k)))(Xk(X^k+Kk(ZkHX^k)))T)

那么此时将 Z k = H X k + v k , 进行替换。 那么此时将 Z_{k}=H X_{k}+v_{k} , 进行替换。 那么此时将Zk=HXk+vk,进行替换。

那么 X k − X ^ k = X k − X ^ k − − K k X_{k}-\hat{X}_{k}=X_{k}-\hat{X}_{k}^{-}-K_{k} XkX^k=XkX^kKk ( H X k + v k ) + K k H X ^ k − = X k − X ^ k − − K k \left(H X_{k}+v_{k}\right)+K_{k} H \hat{X}_{k}^{-}=X_{k}-\hat{X}_{k}^{-}-K_{k} (HXk+vk)+KkHX^k=XkX^kKk

H ( X k − X ^ k − ) − K k v k = ( I − K k H ) ( X k − X ^ k − ) − K k v k , H\left(X_{k}-\hat{X}_{k}^{-}\right)-K_{k} v_{k}=\left(I-K_{k} H\right)\left(X_{k}-\hat{X}_{k}^{-}\right)-K_{k} v_{k} , H(XkX^k)Kkvk=(IKkH)(XkX^k)Kkvk,
由于 e k = X k − X ^ k e_{k}=X_{k}-\widehat{X}_{k} ek=XkX k , 因此也可以命名 X k − X ^ k − 为 e k X_{k}-\widehat{X}_{k}^{-} 为 e_{k} XkX kek 的先验, 记为 e k − , e_{k}{ }^{-} , ek,

因此  P 可改写: P = E ( e k e k T ) = E ( ( ( I − K k H ) e k − − K k v k ) ( ( I − K k H ) e k − − K k v k ) T ) ,  \text { 因此 } \mathrm{P} \text { 可改写:} \mathrm{P}=\mathrm{E}\left(e_{k} e_{k}{ }^{T}\right)=\mathrm{E}\left(\left(\left(I-K_{k} H\right) e_{k}{ }^{-}-K_{k} v_{k}\right)\left(\left(I-K_{k} H\right) e_{k}^{-}-K_{k} v_{k}\right)^{T}\right) \text {, }  因此 P 可改写:P=E(ekekT)=E(((IKkH)ekKkvk)((IKkH)ekKkvk)T)

= E [ ( I − k k H ) e k ′ e k T T ( I − k k H ) T − ( I − k k H ) e k ′ v k T k k T − k k v k e k r T ( I − k k H ) T + k k v k v k T k k T ] = E [ ( I − k k H ) e k ′ e k ′ T ( I − k k H ) T ] − E [ ( I − k k H ) e k ′ v k T k k T ] − E [ k k v k e k ′ T ( I − k k H ) T ] + E [ k k v k v k T k k T ] \begin{array}{c} =\mathrm{E}\left[\left(I-k_{k} H\right) e_{k}^{\prime} e_{k}^{T T}\left(I-k_{k} H\right)^{T}-\left(I-k_{k} H\right) e_{k}^{\prime} v_{k}{ }^{T} k_{k}{ }^{T}-k_{k} v_{k} e_{k}^{r T}\left(I-k_{k} H\right)^{T}+k_{k} v_{k} v_{k}{ }^{T} k_{k}{ }^{T}\right] \\ =\mathrm{E}\left[\left(I-k_{k} H\right) e_{k}^{\prime} e_{k}^{\prime T}\left(I-k_{k} H\right)^{T}\right]-E\left[\left(I-k_{k} H\right) e_{k}^{\prime} v_{k}{ }^{T} k_{k}{ }^{T}\right]-E\left[k_{k} v_{k} e_{k}^{\prime T}\left(I-k_{k} H\right)^{T}\right] \\ +E\left[k_{k} v_{k} v_{k}{ }^{T} k_{k}{ }^{T}\right] \end{array} =E[(IkkH)ekekTT(IkkH)T(IkkH)ekvkTkkTkkvkekrT(IkkH)T+kkvkvkTkkT]=E[(IkkH)ekekT(IkkH)T]E[(IkkH)ekvkTkkT]E[kkvkekT(IkkH)T]+E[kkvkvkTkkT]

因为 E [ e k − ] = 0 , E [ v k T ] = 0 上式可简化为 : = E [ ( I − k k H ) e k ′ e k T T ( I − k k H ) T ] + E [ k k v k v k T k k T ] = ( I − k k H ) E [ e k ′ e k T T ] ( I − k k H ) T + k k E [ v k v k T ] k k T 设 P k − = E [ e k ′ e k ′ T ] , R = E [ v k v k T ] , 于是有 : = ( I − k k H ) P k ′ ( I − k k H ) T + k k R k k T = ( P k ′ − k k H P k ′ ) ( I − k k H ) T + k k R k k T = ( P k ′ − k k H P k ′ ) ( I T − H T k k T ) + k k R k k T P k = P k ′ − k k H P k ′ − P k ′ H T k k T + k k H P k ′ H T k k T + k k R k k T 因为 P k ′ H T k k T = ( k k ( P k ′ H T ) ) T = ( k k H P k ′ T ) T tr ⁡ ( P k ) = tr ⁡ ( P k ′ ) − 2 tr ⁡ ( k k H P k ′ ) + tr ⁡ ( k k H P k ′ H T k k T ) + tr ⁡ ( k k R k k T ) 令 dtr ⁡ ( P k ) d k k = 0 又因为 : d t r ( A B ) d A = B T dtr ⁡ ( A B A T ) d A = A B + A B T 因为 R 、 H P k − H T 是对角矩阵 , 所以 : tr ⁡ ( k k H P k ′ H T k k T ) = 2 k k H P k ′ H T , tr ⁡ ( k k R k k T ) = 2 k k R 于是有。 因为 \mathrm{E}\left[e_{k}^{-}\right]=0, E\left[v_{k}{ }^{T}\right]=0 上式可简化为: \begin{array}{l} =\mathrm{E}\left[\left(I-k_{k} H\right) e_{k}^{\prime} e_{k}^{T T}\left(I-k_{k} H\right)^{T}\right]+E\left[k_{k} v_{k} v_{k}{ }^{T} k_{k}{ }^{T}\right] \\ =\left(I-k_{k} H\right) \mathrm{E}\left[e_{k}^{\prime} e_{k}{ }^{T T}\right]\left(I-k_{k} H\right)^{T}+k_{k} E\left[v_{k} v_{k}{ }^{T}\right] k_{k}{ }^{T} \end{array} 设 P_{k}^{-}=\mathrm{E}\left[e_{k}^{\prime} e_{k}^{\prime T}\right], R=E\left[v_{k} v_{k}{ }^{T}\right] ,于是有: \begin{array}{c} =\left(I-k_{k} H\right) P_{k}^{\prime}\left(I-k_{k} H\right)^{T}+k_{k} R k_{k}{ }^{T} \\ =\left(P_{k}^{\prime}-k_{k} H P_{k}^{\prime}\right)\left(I-k_{k} H\right)^{T}+k_{k} R k_{k}{ }^{T} \\ =\left(P_{k}^{\prime}-k_{k} H P_{k}^{\prime}\right)\left(I^{T}-H^{T} k_{k}{ }^{T}\right)+k_{k} R k_{k}{ }^{T} \\ \mathrm{P}_{k}=P_{k}^{\prime}-k_{k} H P_{k}^{\prime}-P_{k}^{\prime} H^{T} k_{k}{ }^{T}+k_{k} H P_{k}^{\prime} H^{T} k_{k}{ }^{T}+k_{k} R k_{k}{ }^{T} \end{array} 因为 P_{k}^{\prime} H^{T} k_{k}{ }^{T}=\left(k_{k}\left(P_{k}^{\prime} H^{T}\right)\right)^{T}=\left(k_{k} H P_{k}^{\prime T}\right)^{T} \operatorname{tr}\left(\mathrm{P}_{k}\right)=\operatorname{tr}\left(P_{k}^{\prime}\right)-2 \operatorname{tr}\left(k_{k} H P_{k}^{\prime}\right)+\operatorname{tr}\left(k_{k} H P_{k}^{\prime} H^{T} k_{k}{ }^{T}\right)+\operatorname{tr}\left(k_{k} R k_{k}{ }^{T}\right) 令 \frac{\operatorname{dtr}\left(\mathrm{P}_{k}\right)}{d k_{k}}=0 又因为: \begin{array}{c} \frac{\mathrm{dtr}(\mathrm{AB})}{d A}=B^{T} \\ \frac{\operatorname{dtr}\left(\mathrm{ABA}^{T}\right)}{d A}=A B+\mathrm{AB}^{T} \end{array} 因为 \mathrm{R} 、 H P_{k}^{-} H^{T} 是对角矩阵, 所以: \operatorname{tr}\left(k_{k} H P_{k}^{\prime} H^{T} k_{k}^{T}\right)=2 k_{k} H P_{k}^{\prime} H^{T}, \quad \operatorname{tr}\left(k_{k} R k_{k}^{T}\right)=2 k_{k} R 于是有。 因为E[ek]=0,E[vkT]=0上式可简化为:=E[(IkkH)ekekTT(IkkH)T]+E[kkvkvkTkkT]=(IkkH)E[ekekTT](IkkH)T+kkE[vkvkT]kkTPk=E[ekekT],R=E[vkvkT],于是有:=(IkkH)Pk(IkkH)T+kkRkkT=(PkkkHPk)(IkkH)T+kkRkkT=(PkkkHPk)(ITHTkkT)+kkRkkTPk=PkkkHPkPkHTkkT+kkHPkHTkkT+kkRkkT因为PkHTkkT=(kk(PkHT))T=(kkHPkT)Ttr(Pk)=tr(Pk)2tr(kkHPk)+tr(kkHPkHTkkT)+tr(kkRkkT)dkkdtr(Pk)=0又因为:dAdtr(AB)=BTdAdtr(ABAT)=AB+ABT因为RHPkHT是对角矩阵,所以:tr(kkHPkHTkkT)=2kkHPkHT,tr(kkRkkT)=2kkR于是有。

− P k ′ H T + k k ( H P k ′ H T + R ) = 0 k k ( H P k ′ H T + R ) = P k ′ H T k k = P k ′ H T H P k ′ H T + R \begin{array}{c} -P_{k}^{\prime} H^{T}+k_{k}\left(H P_{k}^{\prime} H^{T}+R\right)=0 \\ k_{k}\left(H P_{k}^{\prime} H^{T}+R\right)=P_{k}^{\prime} H^{T} \\ k_{k}=\frac{P_{k}^{\prime} H^{T}}{H P_{k}^{\prime} H^{T}+R} \end{array} PkHT+kk(HPkHT+R)=0kk(HPkHT+R)=PkHTkk=HPkHT+RPkHT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/6575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】分支和循环(上)

【C语言】分支和循环(上) 1、if语句1.2 else1.3分支中包含多条语句1.4嵌套if1.5悬空else问题 2、关系操作符3、条件操作符4、逻辑操作符:与、或、非(取反)(&&,||,&#xff0…

小猪APP分发平台 – 掌握移动应用的推广新途径

在移动互联网高速发展的背景下小猪APP分发平台 – 掌握移动应用的推广新途径,app分发已成为开发者和企业关注的重点。小猪APP分发平台作为行业内的新星小猪APP分发平台 – 掌握移动应用的推广新途径,提供了一个创新且高效的方式帮助开发者推广他们的应用…

ZOC8 for Mac v8.08.1激活版:卓越性能的SSH客户端

在远程连接和管理的世界中,ZOC8 for Mac以其卓越的性能和丰富的功能,成为了众多专业人士的首选SSH客户端。它支持SSH1、SSH2、Telnet、Rlogin、Serial等多种协议,让您轻松连接到远程服务器。ZOC8拥有简洁直观的界面和强大的功能设置&#xff…

SQL 基础 | JOIN 操作介绍

在SQL中,JOIN是一种强大的功能,用于将两个或多个表中的行结合起来,基于相关的列之间的关系。 JOIN操作通常用在SELECT语句中,以便从多个表中检索数据。 以下是几种基本的JOIN类型以及它们的用法: INNER JOIN&#xff1…

STM32 串口IDLE接收空闲中断+DMA

参考 http://t.csdnimg.cn/fAV38 1.基础知识 STM32 IDLE 接收空闲中断 功能: 在使用串口接受字符串时,可以使用空闲中断(IDLEIE置1,即可使能空闲中断),这样在接收完一个字符串,进入空闲状态时&…

(三)Appdesigner-界面转换及数据导入和保存

提示:文章为系列文章,可以在对应学习专栏里面进行学习。对应资源已上传 目录 前言 一、Appdesigner是什么? 二、界面切换 三、数据导入及保存 (一)数据导入 (二)数据保存 总结 前言 Appd…

ubuntu搭建kms服务器

1.下载kms开源包(如果提示找不到wget命令的话:apt install wget): wget https://github.com/Wind4/vlmcsd/releases/download/svn1111/binaries.tar.gz2.解压: tar -xzvf binaries.tar.gz接着cd 进入 Linux/intel/static/ 文件夹下: 3.选择对应的文件,这里我们选…

C++:继承-继承权限

在C中,类的权限分为公有、私有和保护三种。这些权限控制了类的成员(数据成员和成员函数)对外部代码的可见性和访问性。 公有(public)权限: 在公有权限下声明的成员可以被类的外部代码直接访问;公…

第十篇:深入文件夹:Python中的文件管理和自动化技术

深入文件夹:Python中的文件管理和自动化技术 1 文件系统基础操作 在今天的技术博客中,我们将深入探讨Python中的文件系统基础操作。文件系统对于任何操作系统都是不可或缺的组成部分,它管理着数据的存储、检索以及维护。Python通过其标准库中…

【Linux 进程】 自定义shell

目录 关于shell 1.打印提示符&&获取用户命令字符​编辑 2.分割字符串 3.检查是否为内建命令 cd命令 export命令 echo命令 1.输出最后一个执行的命令的状态退出码(返回码) 2.输出指定环境变量 4.执行外部命令 关于shell Shell 是计算机操…

免费开源,无需 GPU,本地化部署大语言模型的对话系统

免费开源,无需 GPU,本地化部署大语言模型的对话系统 分类 编程技术 项目名: FreeAskInternet -- 本地化部署大语言模型的对话系统 Github 开源地址: https://github.com/nashsu/FreeAskInternet FreeAskInternet 是一个免费开源的工具&am…

Kotlin: Expecting a ‘>‘

数组值为任意类型&#xff0c;声明报错: Kotlin: Expecting a > var anyArr1: Array<Any?> arrayOf("a", "b", "c", true, 34)原因是&#xff1a; // var anyArr1: Array<Any?> arrayOf("a", "b", "c…

发电厂智能巡检机器人:让发电厂更安全、更高效

在发电厂的众多应用场景中&#xff0c;升压站、化学车间、空冷塔、输煤皮带、综合管廊等&#xff0c;一直以来都是人工巡检的主战场。然而&#xff0c;这些场所环境极为复杂&#xff0c;人工巡检面临着诸多难题&#xff0c;强度大、频率低、间隔长等问题突出。这使得设备在运行…

c++多线程基础

简介 c多线程基础需要掌握这三个标准库&#xff1a;std::thread, std::mutex, and std::async。 1. Hello, world #include <iostream> #include <thread>void hello() { std::cout << "Hello Concurrent World!\n"; }int main() {std::thread…

[NSSCTF]prize_p2

题目 打开是一段js代码 // 导入所需的模块 const { randomBytes } require(crypto); // 导入 crypto 模块&#xff0c;用于生成随机字节 const express require(express); // 导入 Express.js 模块&#xff0c;用于构建 Web 应用程序 const fs require(fs); // 导入文件系…

论文笔记:(Security 22) 关于“二进制函数相似性检测”的调研

个人博客链接 注&#xff1a;部分内容参考自GPT生成的内容 [Security 22] 关于”二进制函数相似性检测“的调研&#xff08;个人阅读笔记&#xff09; 论文&#xff1a;《How Machine Learning Is Solving the Binary Function Similarity Problem》&#xff08;Usenix Securi…

Golang中实现调用Windows API向指定目标发送ARP请求

简介 Go库中很多实现的arp都是支持osx/linux/bsd之类的&#xff0c; 但几乎没有支持windows的&#xff0c; 也试了一些方式&#xff0c; 目前还是选用调用windows的API&#xff0c; 记录一下这一次windows的API的调用经验。 实现 代码 package main/* #cgo CFLAGS: -I. #cgo …

Reactor模型详解

目录 1.概述 2.Single Reactor 3.muduo库的Multiple Reactors模型如下 1.概述 维基百科对Reactor模型的解释 The reactor design pattern is an event handling pattern for handling service requests delivered concurrently to a service handler by one or more inputs.…

OpenCV如何模板匹配(59)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV如何实现背投(58) 下一篇 &#xff1a;OpenCV在图像中寻找轮廓(60) 目标 在本教程中&#xff0c;您将学习如何&#xff1a; 使用 OpenCV 函数 matchTemplate()搜索图像贴片和输入…

第四篇:记忆的迷宫:探索计算机存储结构的奥秘与创新

记忆的迷宫&#xff1a;探索计算机存储结构的奥秘与创新 1 引言 1.1 计算机存储系统的发展与重要性 在现代计算技术中&#xff0c;存储系统承担着非常关键的角色&#xff0c;它不仅负责信息的持久保存&#xff0c;同时确保高效的数据访问速度&#xff0c;影响着整体系统性能的…