目标跟踪—卡尔曼滤波

目标跟踪—卡尔曼滤波

卡尔曼滤波引入

在这里插入图片描述

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

历史上最早考虑的是维纳滤波,后来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.rhkb.cn/news/319399.html

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

相关文章

原生IP和住宅IP有什么区别?

原生IP和住宅IP在多个方面存在显著的区别。 从定义和来源来看,原生IP是指未经NAT(网络地址转换)处理的真实、公网可路由的IP地址,它直接从互联网服务提供商(ISP)获得,而不是通过代理服务器或VP…

【MATLAB】解决不同版本MATLAB出现中文乱码的问题

解决不同版本MATLAB出现中文乱码的问题 方法1:更改保存类型为GBK方法2:记事本打开方法3:Notepad参考 低版本matlab打开高版本Matlab的.m文件时,出现中文乱码问题。比如下图: 出现原因为: 编码格式不统一问…

批量抓取某电影网站的下载链接

思路: 进入电影天堂首页,提取到主页面中的每一个电影的背后的那个urL地址 a. 拿到“2024必看热片”那一块的HTML代码 b. 从刚才拿到的HTML代码中提取到href的值访问子页面,提取到电影的名称以及下载地址 a. 拿到子页面的页面源代码 b. 数据提…

Ansys Speos|进行智能手机镜头杂散光分析

本例的目的是研究智能手机Camera系统的杂散光。杂散光是指光向相机传感器不需要的散光光或镜面光,是在光学设计中无意产生的,会降低相机系统的光学性能。 在本例中,光学透镜系统使用Ansys Zemax OpticStudio (ZOS)进行设计,并使用…

A Bug‘s Life (并查集)

//新生训练 #include <iostream> #include <algorithm> using namespace std; const int N 5000; int p[N], sz[N]; int n, m; int find(int x) {if (p[x] ! x)p[x] find(p[x]);return p[x]; } int main() {int T;scanf("%d", &T);for (int k 1; …

RabbitMQ之顺序消费

什么是顺序消费 例如&#xff1a;业务上产生者发送三条消息&#xff0c; 分别是对同一条数据的增加、修改、删除操作&#xff0c; 如果没有保证顺序消费&#xff0c;执行顺序可能变成删除、修改、增加&#xff0c;这就乱了。 如何保证顺序性 一般我们讨论如何保证消息的顺序性&…

Flask教程3:jinja2模板引擎

文章目录 模板的导入与使用 模板的导入与使用 Flask通过render_template来实现模板的渲染&#xff0c;要使用这个方法&#xff0c;我们需要导入from flask import rander_template&#xff0c;模板中注释需放在{# #}中 模板的第一个参数为指定的模板文件名称&#xff0c;如自定…

gige工业相机突破(一,准备资源)

gige相机能不能绕开相机生产商提供的sdk&#xff0c;而直接取到像&#xff1f; 两种办法&#xff0c;第一&#xff0c;gige vision2.0说明书&#xff0c;第二&#xff0c;genicam 首先你会去干什么事&#xff1f; 好几年&#xff0c;我都没有突破&#xff0c;老虎吃天&#x…

鸿蒙开发仿咸鱼TabBar

鸿蒙开发自定义TabBar&#xff0c;实现tabBar 上中间按钮凸起效果 第一步、定义数据模型 export default class TabItemData{defaultIcon: ResourceselectedIcon: Resourcetitle: stringisMiddle: booleanconstructor(defaultIcon:Resource, selectedIcon:Resource, title:st…

5分钟速通大语言模型(LLM)的发展与基础知识

✍️ 作者&#xff1a;哈哥撩编程&#xff08;视频号同名&#xff09; 博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 &#x1f3c6; 推荐专栏&#xff1a; &#x1f3c5; 程序员&#xff1a;职场关键角色通识宝…

Rust web简单实战

一、使用async搭建简单的web服务 1、修改cargo.toml文件添加依赖 [dependencies] futures "0.3" tokio { version "1", features ["full"] } [dependencies.async-std] version "1.6" features ["attributes"]2、搭…

Java发送请求-http+https的

第一步&#xff1a;建议ssl连接对象&#xff0c;信任所有证书 第二步&#xff1a;代码同时支持httphttps 引入源码类 是一个注册器 引入这个类&#xff0c;和它的方法create 注册器&#xff0c;所以对http和https都进行注册&#xff0c;参数为id和item&#xff0c;其中http的…

WebAssembly 入门教程 c++、python编译wasm

WebAssembly 入门 了解 wasm 使用场景&#xff0c;复杂对象传递和经验法则。 简介 WebAssembly 是一种新的编码方式&#xff0c;可以在现代的网络浏览器中运行。它是一种低级的类汇编语言&#xff0c;具有紧凑的二进制格式&#xff0c;可以接近原生的性能运行&#xff0c;并…

c#学习基础1

一、复杂数据类型 1&#xff09;概述 2&#xff09;枚举 1.基本概念 枚举是一个比较特别的存在&#xff0c;它是一个被命名的整形常量的集合&#xff0c;一般用它来表示状态&#xff0c;类型等 1.1申明枚举和申明枚举变量 1.2申明枚举语法 2.在哪里申明枚举 3.枚举的使用 4…

【网络编程下】五种网络IO模型

目录 前言 一.I/O基本概念 1.同步和异步 2.阻塞和非阻塞 二.五种网络I/O模型 1.阻塞I/O模型 2.非阻塞式I/O模型 ​编辑 3.多路复用 4.信号驱动式I/O模型 5. 异步I/O模型 三.五种I/O模型比较​编辑 六.I/O代码示例 1. 阻塞IO 2.非阻塞I/O 3.多路复用 (1)select …

Llama 3 安装使用方法

Llama3简介&#xff1a; llama3是一种自回归语言模型&#xff0c;采用了transformer架构&#xff0c;目前开源了8b和70b参数的预训练和指令微调模型&#xff0c;400b正在训练中&#xff0c;性能非常强悍&#xff0c;并且在15万亿个标记的公开数据进行了预训练&#xff0c;比ll…

Leetcode—422. 有效的单词方块【简单】Plus

2024每日刷题&#xff08;126&#xff09; Leetcode—422. 有效的单词方块 实现代码 class Solution { public:bool validWordSquare(vector<string>& words) {int row words.size();for(int i 0; i < row; i) {// 当前这一行的列数int col words[i].length(…

Postman的一些使用技巧

Postman 是一个流行的 API 开发工具&#xff0c;用于设计、开发、测试、发布和监控 API。在现代web开发中使用非常广泛。后端开发必备而且必会的工具。 目录 1.配置环境变量 2.动态变量 3.脚本 4.测试 5.模拟 6.监控 7.集合运行器 8.响应保存 9.请求历史 10.同步请求…

如何在iPhone上恢复出厂设置后恢复数据

你不想让这种情况发生&#xff0c;但它确实发生了。您必须将iPhone恢复出厂设置。当您的 iPhone 上出现软件问题且无法修复时&#xff0c;可能会发生这种情况。相反&#xff0c;在更新期间&#xff0c;或者您的iPhone遇到问题时&#xff0c;iPhone上的数据不再存在。 不过不用…

leetcode_47.全排列 II

47. 全排列 II 题目描述&#xff1a;给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2] 输出&#xff1a; [[1,1,2],[1,2,1],[2,1,1]]示例 2&#xff1a; 输入&#xff1a;nums [1,2,3] …