卡尔曼滤波与组合导航原理(一)滤波的基本概念、递推最小二乘

news2024/10/6 6:01:04

文章目录

    • 一、滤波的基本概念
      • 1、传统数字滤波器
      • 2、现代控制中的状态观测器
      • 3、最优估计的含义
      • 4、温度估计的例子
        • 1.问题描述
        • 2.分析
    • 二、递推最小二乘

课程链接:https://www.bilibili.com/video/BV11K411J7gp/?p=1

参考书目:《捷联惯导算法与组合导航原理》-严恭敏、《卡尔曼滤波与组合导航原理》-秦永元、《Kalman滤波理论及其在导航系统中的应用》-付梦印、《惯性仪器测试与数据分析》-严恭敏

先修课程:矩阵论、数理统计(随机过程)、自动控制原理(现代控制)、数字信号处理(我都没学过,不影响看)

一、滤波的基本概念

1、传统数字滤波器

主要是基于频带来设计,单输入单输出系统。认为数字滤波器处理的是确定性信号,有用的信号在确定的频带内,要去除的噪声在频带之外;噪声在频带内,就没法处理

两种方法:①模拟转数字②直接数字滤波器

MATLAB工具箱fdatool,可以很方便的设置数字滤波器:

2、现代控制中的状态观测器

  • 如果参数都知道,上下两部分就只差了一个观测器矩阵E,类似与Kalman滤波中的K矩阵
  • 现代控制中处理的是确定性信号,可以用函数来描述,而估计器处理的是带误差的信号

3、最优估计的含义

每一个分量的二阶矩都达到最小
E [ ( X ~ k ( 1 ) ) 2 ] + E [ ( X ~ k ( 2 ) ) 2 ] + ⋯ + E [ ( X ~ k ( n ) ) 2 ] = min ⁡ \mathrm{E}\left[\left(\tilde{X}{k}{(1)}\right){2}\right]+\mathrm{E}\left[\left(\tilde{X}{k}{(2)}\right){2}\right]+\cdots+\mathrm{E}\left[\left(\tilde{X}_{k}{(n)}\right){2}\right]=\min E[(X~k(1))2]+E[(X~k(2))2]++E[(X~k(n))2]=min
即: E [ X ~ k T X ~ k ] = min ⁡ \mathrm{E}\left[\tilde{\boldsymbol{X}}_{k}^{\mathrm{T}} \tilde{\boldsymbol{X}}_{k}\right]=\min E[X~kTX~k]=min
E [ X ~ k X ~ k T ] = [ E [ ( X k ( 1 ) ) 2 ] E [ X k ( 1 ) X k ( 2 ) ] ⋯ E [ X k ( 1 ) X k ( n ) ] E [ X ~ k ( 2 ) X ~ k ( 1 ) ] E [ ( X ~ k ( 2 ) ) 2 ] ⋯ E [ X ~ k ( 2 ) X ~ k ( n ) ] ⋮ ⋮ ⋱ ⋮ E [ X ~ k ( n ) X ~ k ( 1 ) ] E [ X ~ k ( n ) X ~ k ( 2 ) ] ⋯ E [ ( X ~ k ( n ) ) 2 ] ] \mathrm{E}\left[\tilde{\boldsymbol{X}}_{k} \tilde{\boldsymbol{X}}_{k}^{\mathrm{T}}\right]=\left[\begin{array}{cccc}\mathrm{E}\left[\left(X_{k}^{(1)}\right)^{2}\right] & \mathrm{E}\left[X_{k}^{(1)} X_{k}^{(2)}\right] & \cdots & \mathrm{E}\left[X_{k}^{(1)} X_{k}^{(n)}\right] \\ \mathrm{E}\left[\tilde{X}_{k}^{(2)} \tilde{X}_{k}^{(1)}\right] & \mathrm{E}\left[\left(\tilde{X}_{k}^{(2)}\right)^{2}\right] & \cdots & \mathrm{E}\left[\tilde{X}_{k}^{(2)} \tilde{X}_{k}^{(n)}\right] \\ \vdots & \vdots & \ddots & \vdots \\ \mathrm{E}\left[\tilde{X}_{k}^{(n)} \tilde{X}_{k}^{(1)}\right] & \mathrm{E}\left[\tilde{X}_{k}^{(n)} \tilde{X}_{k}^{(2)}\right] & \cdots & \mathrm{E}\left[\left(\tilde{X}_{k}^{(n)}\right)^{2}\right]\end{array}\right] E[X~kX~kT]= E[(Xk(1))2]E[X~k(2)X~k(1)]E[X~k(n)X~k(1)]E[Xk(1)Xk(2)]E[(X~k(2))2]E[X~k(n)X~k(2)]E[Xk(1)Xk(n)]E[X~k(2)X~k(n)]E[(X~k(n))2]
只需要关注对角线上的元素,即求迹:
tr ⁡ ( P k ) = tr ⁡ ( E [ X ~ k X ~ k T ] ) = min ⁡ \operatorname{tr}\left(\boldsymbol{P}_{k}\right)=\operatorname{tr}\left(\mathrm{E}\left[\tilde{\boldsymbol{X}}_{k} \tilde{\boldsymbol{X}}_{k}^{\mathrm{T}}\right]\right)=\min tr(Pk)=tr(E[X~kX~kT])=min

4、温度估计的例子

1.问题描述

  • 某房间内温度受随机干扰影响——不恒定、波动
  • 每小时用温度计测量一次温度——离散观测点
  • 试对该房间温度作最佳估计——建模
  • 干扰: W ∼ N ( 0 , 0. 4 ∧ 2 ) W \sim N \left(0,0 .{4^{\wedge} 2}\right) WN(0,0.42)——实际参数波动
  • 温度计误差 : V ∼ N ( 0 , 0. 3 ∧ 2 ) V \sim N\left(0,0.3^{\wedge} 2\right) VN(0,0.32)——观测值噪声

2.分析

  • 假设知道上一时刻温度 25℃,可以知道这一小时的温度受到干扰影响;根据高斯分布,67%概率在干扰的范围内 25±0.4℃,

  • 如果温度计读数是 25.2℃,根据高斯分布,67%概率温度在 25.2±0.3℃

  • 现在有两方面的信息,一个是惯性保持下来的 25±0.4℃,一个是量测得到的 25.2±0.3℃。如何得出此房间的温度?

  • 按照最朴素的想法:两个值加权平均。0.4 代表误差大一些,0.3 代表误差小一些,量测信息更准确,占的权重更大。

  • 假设两个值不相关,按概率论方法,可得到:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jUo9Ucjq-1685885499739)(卡尔曼滤波与组合导航原理(一)卡尔曼滤波方程的推导.assets/1685795429896.png)]

    可以看出,一个值的权重取决于另一个值的误差,另一个值误差很小,这个权重就小

  • 再往下一时刻,算法也同样

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LVEaFehN-1685885499740)(卡尔曼滤波与组合导航原理(一)卡尔曼滤波方程的推导.assets/1685795612188.png)]

  • 从噪声(方差)的角度看,这其实很类似电路,噪声往里加就像串联电路,量测信息和预测信息的结合就像是并联电路

  • 如果干扰 W=0,则上一时刻温度是多少,下一时刻温度还是多少;房间是常温,温度计量测带误差,就相当于对常量进行估计,用递推最小二乘法。

  • 如果量测噪声 V=0,温度计很准,量出来多少就是多少,变成确定性系统,不用估计了。

二、递推最小二乘

最小二乘量测模型:
Z k = H k X + V k E [ V k ] = 0 E [ V k V j T ] = R k δ k j \boldsymbol{Z}_{k}=\boldsymbol{H}_{k} \boldsymbol{X}+\boldsymbol{V}_{k} \quad \mathrm{E}\left[\boldsymbol{V}_{k}\right]=\mathbf{0} \quad \mathrm{E}\left[\boldsymbol{V}_{k} \boldsymbol{V}_{j}^{\mathrm{T}}\right]=\boldsymbol{R}_{k} \delta_{k j} Zk=HkX+VkE[Vk]=0E[VkVjT]=Rkδkj

状态方差也有,就是常值,状态转移矩阵就是单位阵,所以一般省略

每一个观测时刻 K K K ,都有一组量测方程 Z k = H k X + V k \boldsymbol{Z}_{k}=\boldsymbol{H}_{k} \boldsymbol{X}+\boldsymbol{V}_{k} Zk=HkX+Vk 。一般认为设计矩阵 H k \boldsymbol{H}_{k} Hk 的列数 n 是确定的(代表参数个数不变),行数 m m m 是不确定的(代表观测值个数可变)。可以把很多观测时刻的数据都列拼接在一起:
Z ‾ i = [ Z 1 Z 2 ⋮ Z i ] , H ‾ i = [ H 1 H 2 ⋮ H i ] , V ‾ i = [ V 1 V 2 ⋮ V i ] \overline{\boldsymbol{Z}}_{i}=\left[\begin{array}{c}\boldsymbol{Z}_{1} \\ \boldsymbol{Z}_{2} \\ \vdots \\ \boldsymbol{Z}_{i}\end{array}\right], \quad \overline{\boldsymbol{H}}_{i}=\left[\begin{array}{c}\boldsymbol{H}_{1} \\ \boldsymbol{H}_{2} \\ \vdots \\ \boldsymbol{H}_{i}\end{array}\right], \quad \overline{\boldsymbol{V}}_{i}=\left[\begin{array}{c}\boldsymbol{V}_{1} \\ \boldsymbol{V}_{2} \\ \vdots \\ \boldsymbol{V}_{i}\end{array}\right] Zi= Z1Z2Zi ,Hi= H1H2Hi ,Vi= V1V2Vi
i = k − 1 i=k-1 i=k1 时刻,对此方程做加权最小二乘估计:
X ^ k − 1 = ( H ‾ k − 1 T R ‾ k − 1 − 1 H ‾ k − 1 ) − 1 H ‾ k − 1 T R ‾ k − 1 − 1 Z ‾ k − 1 = P k − 1 H ‾ k − 1 T R ‾ k − 1 − 1 Z ‾ k − 1 \hat{\boldsymbol{X}}_{k-1} =\left(\overline{\boldsymbol{H}}_{k-1}^{\mathrm{T}} \overline{\boldsymbol{R}}_{k-1}^{-1} \overline{\boldsymbol{H}}_{k-1}\right)^{-1} \overline{\boldsymbol{H}}_{k-1}^{\mathrm{T}} \overline{\boldsymbol{R}}_{k-1}^{-1} \overline{\boldsymbol{Z}}_{k-1} =\boldsymbol{P}_{k-1} \overline{\boldsymbol{H}}_{k-1}^{\mathrm{T}} \overline{\boldsymbol{R}}_{k-1}^{-1} \overline{\boldsymbol{Z}}_{k-1} X^k1=(Hk1TRk11Hk1)1Hk1TRk11Zk1=Pk1Hk1TRk11Zk1

上式利用到了前面所有时刻的观测值。同理当 i = k i=k i=k 时的最小二乘估计:
X ^ k = ( H ‾ k T R ‾ k − 1 H ‾ k ) − 1 H ‾ l T R ‾ k − 1 Z ‾ k = P k ( [ H ‾ k − 1 T H k T ] [ R ‾ k − 1 − 1 0 0 R k − 1 ] [ Z ‾ k − 1 $ Z k ] ) = P k ( H ‾ Σ − 1 T R ‾ k − 1 − 1 Z ‾ k − 1 + H k T R 1 − 1 Z k ) \begin{array}{l}\hat{\boldsymbol{X}}_{k}=\left(\overline{\boldsymbol{H}}_{k}^{\mathrm{T}} \overline{\boldsymbol{R}}_{k}^{-1} \overline{\boldsymbol{H}}_{k}\right)^{-1} \overline{\boldsymbol{H}}_{l}^{\mathrm{T}} \overline{\boldsymbol{R}}_{k}^{-1} \overline{\boldsymbol{Z}}_{k} \\ =\boldsymbol{P}_{k}\left(\left[\begin{array}{ll}\overline{\boldsymbol{H}}_{k-1}^{\mathrm{T}} & \boldsymbol{H}_{k}^{\mathrm{T}}\end{array}\right]\left[\begin{array}{cc}\overline{\boldsymbol{R}}_{k-1}^{-1} \mathbf{0} & \\ \mathbf{0} & \boldsymbol{R}_{k}^{-1}\end{array}\right]\left[\begin{array}{c}\overline{\boldsymbol{Z}}_{k-1} \\ \$ \boldsymbol{Z}_{k}\end{array}\right]\right) \\ =\boldsymbol{P}_{k}\left(\overline{\boldsymbol{H}}_{\mathrm{\Sigma}-1}^{\mathrm{T}} \overline{\boldsymbol{R}}_{k-1}^{-1} \overline{\boldsymbol{Z}}_{k-1}+\boldsymbol{H}_{k}^{\mathrm{T}} \boldsymbol{R}_{1}^{-1} \boldsymbol{Z}_{k}\right) \\\end{array} X^k=(HkTRk1Hk)1HlTRk1Zk=Pk([Hk1THkT][Rk1100Rk1][Zk1$Zk])=Pk(HΣ1TRk11Zk1+HkTR11Zk)
递推目标函数:知道前一时刻的估计值 X ^ k − 1 \hat{\boldsymbol{X}}_{k-1} X^k1 P k − 1 \boldsymbol{P}_{k-1} Pk1 矩阵,和当前时刻测量得来的信息 H k , R k , Z k \boldsymbol{H}_{k}, \boldsymbol{R}_{k}, \boldsymbol{Z}_{k} Hk,Rk,Zk ,求得当前时刻的 H k , R k , Z k \boldsymbol{H}_{k}, \boldsymbol{R}_{k}, \boldsymbol{Z}_{k} Hk,Rk,Zk
( H k , R k , Z k ) = f ( X ^ k − 1 , P k − 1 , H k , R k , Z k ) \left(\boldsymbol{H}_{k}, \boldsymbol{R}_{k}, \boldsymbol{Z}_{k}\right)=f\left(\hat{\boldsymbol{X}}_{k-1}, \boldsymbol{P}_{k-1}, \boldsymbol{H}_{k}, \boldsymbol{R}_{k}, \boldsymbol{Z}_{k}\right) (Hk,Rk,Zk)=f(X^k1,Pk1,Hk,Rk,Zk)
方差阵递推(协方差传播定律):
P k = ( H ‾ k T R ‾ k − 1 H ‾ k ) − 1 = ( [ H ‾ k − 1 T H k T ] [ R ‾ k − 1 − 1 0 0 R k − 1 ] [ H ‾ k − 1 H k ] ) − 1 = ( H ‾ k − 1 T R ‾ k − 1 − 1 H ‾ k − 1 + H k T R k − 1 H k ) − 1 = ( P k − 1 − 1 + H k T R k − 1 H k ) − 1 \begin{aligned} \boldsymbol{P}_{k} & =\left(\overline{\boldsymbol{H}}_{k}^{\mathrm{T}} \overline{\boldsymbol{R}}_{k}^{-1} \overline{\boldsymbol{H}}_{k}\right)^{-1} \\ & =\left(\left[\begin{array}{ll}\overline{\boldsymbol{H}}_{k-1}^{\mathrm{T}} & \boldsymbol{H}_{k}^{\mathrm{T}}\end{array}\right]\left[\begin{array}{cc}\overline{\boldsymbol{R}}_{k-1}^{-1} & \mathbf{0} \\ \mathbf{0} & \boldsymbol{R}_{k}^{-1}\end{array}\right]\left[\begin{array}{c}\overline{\boldsymbol{H}}_{k-1} \\ \boldsymbol{H}_{k}\end{array}\right]\right)^{-1} \\ & =\left(\overline{\boldsymbol{H}}_{k-1}^{\mathrm{T}} \overline{\boldsymbol{R}}_{k-1}^{-1} \overline{\boldsymbol{H}}_{k-1}+\boldsymbol{H}_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1} \boldsymbol{H}_{k}\right)^{-1} \\ & =\left(\boldsymbol{P}_{k-1}^{-1}+\boldsymbol{H}_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1} \boldsymbol{H}_{k}\right)^{-1}\end{aligned} Pk=(HkTRk1Hk)1=([Hk1THkT][Rk1100Rk1][Hk1Hk])1=(Hk1TRk11Hk1+HkTRk1Hk)1=(Pk11+HkTRk1Hk)1
上式求逆太多,可以写为下面逆的形式:
P k − 1 = P k − 1 − 1 + H k T R k − 1 H k \boldsymbol{P}_{k}^{-1}=\boldsymbol{P}_{k-1}^{-1}+\boldsymbol{H}_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1} \boldsymbol{H}_{k} Pk1=Pk11+HkTRk1Hk
状态估计递推
X ^ k = P k ( H ‾ k − 1 T R ‾ k − 1 − 1 Z ‾ k − 1 + H k T R k − 1 Z k ) = P k ( P k − 1 − 1 P k − 1 H ‾ k − 1 T R ‾ k − 1 − 1 Z ‾ k − 1 + H k T R k − 1 Z k ) = P k ( P k − 1 − 1 X ^ k − 1 + H k T R k − 1 Z k ) = P k [ ( P k − 1 − H k T R k − 1 H k ) X ^ k − 1 + H k T R k − 1 Z k ] = X ^ k − 1 + P k H k T R k − 1 ( Z k − H k X ^ k − 1 ) \begin{aligned} \hat{\boldsymbol{X}}_{k} & =\boldsymbol{P}_{k}\left(\overline{\boldsymbol{H}}_{k-1}^{\mathrm{T}} \overline{\boldsymbol{R}}_{k-1}^{-1} \overline{\boldsymbol{Z}}_{k-1}+\boldsymbol{H}_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1} \boldsymbol{Z}_{k}\right)=\boldsymbol{P}_{k}\left(\boldsymbol{P}_{k-1}^{-1} \boldsymbol{P}_{k-1} \overline{\boldsymbol{H}}_{k-1}^{\mathrm{T}} \overline{\boldsymbol{R}}_{k-1}^{-1} \overline{\boldsymbol{Z}}_{k-1}+\boldsymbol{H}_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1} \boldsymbol{Z}_{k}\right) \\ & =\boldsymbol{P}_{k}\left(\boldsymbol{P}_{k-1}^{-1} \hat{\boldsymbol{X}}_{k-1}+\boldsymbol{H}_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1} \boldsymbol{Z}_{k}\right)=\boldsymbol{P}_{k}\left[\left(\boldsymbol{P}_{k}^{-1}-\boldsymbol{H}_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1} \boldsymbol{H}_{k}\right) \hat{\boldsymbol{X}}_{k-1}+\boldsymbol{H}_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1} \boldsymbol{Z}_{k}\right] \\ & =\hat{\boldsymbol{X}}_{k-1}+\boldsymbol{P}_{k} \boldsymbol{H}_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1}\left(\boldsymbol{Z}_{k}-\boldsymbol{H}_{k} \hat{\boldsymbol{X}}_{k-1}\right) \end{aligned} X^k=Pk(Hk1TRk11Zk1+HkTRk1Zk)=Pk(Pk11Pk1Hk1TRk11Zk1+HkTRk1Zk)=Pk(Pk11X^k1+HkTRk1Zk)=Pk[(Pk1HkTRk1Hk)X^k1+HkTRk1Zk]=X^k1+PkHkTRk1(ZkHkX^k1)
上式已经是递推最小二乘了,但为了更接近Kalman滤波,还可以继续向下推导。由于求逆特别多,引入矩阵求逆引理

对非奇异矩阵 A \boldsymbol{A} A 及子矩阵 A 11 , A 22 \boldsymbol{A}_{11}, \boldsymbol{A}_{22} A11,A22, 若 A = [ A 11 A 12 A 21 A 22 ] \boldsymbol{A}=\left[\begin{array}{ll}\boldsymbol{A}_{11} & \boldsymbol{A}_{12} \\ \boldsymbol{A}_{21} & \boldsymbol{A}_{22}\end{array}\right] A=[A11A21A12A22] ,把 A \boldsymbol{A} A LU分解成求逆简单的三角阵,再求逆:
A = [ I n 0 A 21 A 11 − 1 I m ] [ A 11 A 12 0 A 22 − A 21 A 11 − 1 A 12 ] \boldsymbol{A}=\left[\begin{array}{cc}\boldsymbol{I}_{n} & \mathbf{0} \\ \boldsymbol{A}_{21} \boldsymbol{A}_{11}^{-1} & \boldsymbol{I}_{m}\end{array}\right]\left[\begin{array}{cc}\boldsymbol{A}_{11} & \boldsymbol{A}_{12} \\ \mathbf{0} & \boldsymbol{A}_{22}-\boldsymbol{A}_{21} \boldsymbol{A}_{11}^{-1} \boldsymbol{A}_{12}\end{array}\right] A=[InA21A1110Im][A110A12A22A21A111A12]

[ I n 0 A 21 A 11 − 1 I m ] − 1 = [ I n 0 − A 21 A 11 − 1 I m ] \left[\begin{array}{cc}\boldsymbol{I}_{n} & \mathbf{0} \\ \boldsymbol{A}_{21} \boldsymbol{A}_{11}^{-1} & \boldsymbol{I}_{m}\end{array}\right]^{-1}=\left[\begin{array}{cc}\boldsymbol{I}_{n} & \mathbf{0} \\ -\boldsymbol{A}_{21} \boldsymbol{A}_{11}^{-1} & \boldsymbol{I}_{m}\end{array}\right] [InA21A1110Im]1=[InA21A1110Im]

[ A 11 A 12 0 A 22 − A 21 A 11 − 1 A 12 ] − 1 = [ A 11 − 1 − A 11 − 1 A 12 ( A 22 − A 21 A 11 − 1 A 12 ) − 1 0 ( A 22 − A 21 A 11 − 1 A 12 ) − 1 ] \left[\begin{array}{cc}A_{11} & A_{12} \\ 0 & A_{22}-A_{21} A_{11}^{-1} A_{12}\end{array}\right]^{-1}=\left[\begin{array}{cc}A_{11}^{-1} & -A_{11}^{-1} A_{12}\left(A_{22}-A_{21} A_{11}^{-1} A_{12}\right)^{-1} \\ \mathbf{0} & \left(A_{22}-A_{21} A_{11}^{-1} A_{12}\right)^{-1}\end{array}\right] [A110A12A22A21A111A12]1=[A1110A111A12(A22A21A111A12)1(A22A21A111A12)1]

求逆后的两式相乘得:
A − 1 = [ A 11 − 1 + A 11 − 1 A 12 ( A 22 − A 21 A 11 − 1 A 12 ) − 1 A 21 A 11 − 1 − A 11 − 1 A 12 ( A 22 − A 21 A 11 − 1 A 12 ) − 1 − ( A 22 − A 21 A 11 − 1 A 12 ) − 1 A 21 A 11 − 1 ( A 22 − A 21 A 11 − 1 A 12 ) − 1 ] = [ ( A 11 − A 12 A 22 − 1 A 21 ) − 1 − ( A 11 − A 12 A 22 − 1 A 21 ) − 1 A 12 A 22 − 1 − A 22 − 1 A 21 ( A 11 − A 12 A 22 − 1 A 21 ) − 1 A 22 − 1 + A 22 − 1 A 21 ( A 11 − A 12 A 22 − 1 A 21 ) − 1 A 12 A 22 − 1 ] \begin{aligned}A^{-1} & =\left[\begin{array}{cc}A_{11}^{-1}+A_{11}^{-1} A_{12}\left(A_{22}-A_{21} A_{11}^{-1} A_{12}\right)^{-1} A_{21} A_{11}^{-1} & -A_{11}^{-1} A_{12}\left(A_{22}-A_{21} A_{11}^{-1} A_{12}\right)^{-1} \\ -\left(A_{22}-A_{21} A_{11}^{-1} A_{12}\right)^{-1} A_{21} A_{11}^{-1} & \left(A_{22}-A_{21} A_{11}^{-1} A_{12}\right)^{-1}\end{array}\right] \\ & =\left[\begin{array}{cc}\left(A_{11}-A_{12} A_{22}^{-1} A_{21}\right)^{-1} & -\left(A_{11}-A_{12} A_{22}^{-1} A_{21}\right)^{-1} A_{12} A_{22}^{-1} \\ -A_{22}^{-1} A_{21}\left(A_{11}-A_{12} A_{22}^{-1} A_{21}\right)^{-1} & A_{22}^{-1}+A_{22}^{-1} A_{21}\left(A_{11}-A_{12} A_{22}^{-1} A_{21}\right)^{-1} A_{12} A_{22}^{-1}\end{array}\right]\end{aligned} A1=[A111+A111A12(A22A21A111A12)1A21A111(A22A21A111A12)1A21A111A111A12(A22A21A111A12)1(A22A21A111A12)1]=[(A11A12A221A21)1A221A21(A11A12A221A21)1(A11A12A221A21)1A12A221A221+A221A21(A11A12A221A21)1A12A221]
矩阵相等,意味着每一个元素都相等,得出下面矩阵求逆引理两个公式(四个里有重复):
( A 11 − A 12 A 22 − 1 A 21 ) − 1 = A 11 − 1 + A 11 − 1 A 12 ( A 22 − A 21 A 11 − 1 A 12 ) − 1 A 21 A 11 − 1 A 11 − 1 A 12 ( A 22 − A 21 A 11 − 1 A 12 ) − 1 = ( A 11 − A 12 A 22 − 1 A 21 ) − 1 A 12 A 22 − 1 \begin{array}{l}\left(A_{11}-A_{12} A_{22}^{-1} A_{21}\right)^{-1}=A_{11}^{-1}+A_{11}^{-1} A_{12}\left(A_{22}-A_{21} A_{11}^{-1} A_{12}\right)^{-1} A_{21} A_{11}^{-1} \\ A_{11}^{-1} A_{12}\left(A_{22}-A_{21} A_{11}^{-1} A_{12}\right)^{-1}=\left(A_{11}-A_{12} A_{22}^{-1} A_{21}\right)^{-1} A_{12} A_{22}^{-1}\end{array} (A11A12A221A21)1=A111+A111A12(A22A21A111A12)1A21A111A111A12(A22A21A111A12)1=(A11A12A221A21)1A12A221

回过头看递推最小二乘的公式:
{ P k = ( P k − 1 − 1 + H k T R k − 1 H k ) − 1 X ^ k = X ^ k − 1 + P k H k T R k − 1 ( Z k − H k X ^ k − 1 ) \left\{\begin{array}{l}\boldsymbol{P}_{k}=\left(\boldsymbol{P}_{k-1}^{-1}+\boldsymbol{H}_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1} \boldsymbol{H}_{k}\right)^{-1} \\ \hat{\boldsymbol{X}}_{k}=\hat{\boldsymbol{X}}_{k-1}+\boldsymbol{P}_{k} \boldsymbol{H}_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1}\left(\boldsymbol{Z}_{k}-\boldsymbol{H}_{k} \hat{\boldsymbol{X}}_{k-1}\right)\end{array}\right. Pk=(Pk11+HkTRk1Hk)1X^k=X^k1+PkHkTRk1(ZkHkX^k1)
可以看出 P 矩阵的递推和矩阵求逆引理的第一个公式对应,令 A 11 = P k − 1 − 1 \boldsymbol{A}_{11}=\boldsymbol{P}_{k-1}^{-1} A11=Pk11, A 12 = − H k T \quad \boldsymbol{A}_{12}=-\boldsymbol{H}_{k}^{\mathrm{T}} A12=HkT, A 22 = R k \quad \boldsymbol{A}_{22}=\boldsymbol{R}_{k} A22=Rk, A 21 = H k \quad \boldsymbol{A}_{21}=\boldsymbol{H}_{k} A21=Hk ,则有:
P k = ( P k − 1 − 1 + H k T R k − 1 H k ) − 1 = P k − 1 − P k − 1 H k T ( R k + H k P k − 1 H k T ) − 1 H k P k − 1 \boldsymbol{P}_{k}=\left(\boldsymbol{P}_{k-1}^{-1}+\boldsymbol{H}_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1} \boldsymbol{H}_{k}\right)^{-1}=\boldsymbol{P}_{k-1}-{\color{red}\boldsymbol{P}_{k-1} \boldsymbol{H}_{k}^{\mathrm{T}}\left(\boldsymbol{R}_{k}+\boldsymbol{H}_{k} \boldsymbol{P}_{k-1} \boldsymbol{H}_{k}^{\mathrm{T}}\right)^{-1}}\boldsymbol{H}_{k} \boldsymbol{P}_{k-1} Pk=(Pk11+HkTRk1Hk)1=Pk1Pk1HkT(Rk+HkPk1HkT)1HkPk1
从左式到右式,看起来更复杂了,但其实左边要求逆三次,右边只要求逆一次。再仔细看,标红的部分与矩阵求逆引理的第二个公式对应:
P k − 1 H k T ( R k + H k P k − 1 H k T ) − 1 = ( P k − 1 − 1 + H k T R k − 1 H k ) − 1 H k T R k − 1 = P k H k T R k − 1 \boldsymbol{P}_{k-1} \boldsymbol{H}_{k}^{\mathrm{T}}\left(\boldsymbol{R}_{k}+\boldsymbol{H}_{k} \boldsymbol{P}_{k-1} \boldsymbol{H}_{k}^{\mathrm{T}}\right)^{-1}={\left(\boldsymbol{P}_{k-1}^{-1}+\boldsymbol{H}_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1} \boldsymbol{H}_{k}\right)^{-1} \boldsymbol{H}_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1}}=\boldsymbol{P}_{k} \boldsymbol{H}_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1} Pk1HkT(Rk+HkPk1HkT)1=(Pk11+HkTRk1Hk)1HkTRk1=PkHkTRk1
带入变化之后式子就可以变得很简单,而且发现最后的结果与状态更新中新息向量 ( Z k − H k X ^ k − 1 ) \left(\boldsymbol{Z}_{k}-\boldsymbol{H}_{k} \hat{\boldsymbol{X}}_{k-1}\right) (ZkHkX^k1) 前的系数一致,把红色的部分记为 K K K ,得最终公式:
{ K k = P k − 1 H k T ( H k P k − 1 H k T + R k ) − 1 X ^ k = X ^ k − 1 + K k ( Z k − H k X ^ k − 1 ) P k = ( I − K k H k ) P k − 1 \left\{\begin{array}{l}\boldsymbol{K}_{k}=\boldsymbol{P}_{k-1} \boldsymbol{H}_{k}^{\mathrm{T}}\left(\boldsymbol{H}_{k} \boldsymbol{P}_{k-1} \boldsymbol{H}_{k}^{\mathrm{T}}+\boldsymbol{R}_{k}\right)^{-1} \\ \hat{\boldsymbol{X}}_{k}=\hat{\boldsymbol{X}}_{k-1}+\boldsymbol{K}_{k}\left(\boldsymbol{Z}_{k}-\boldsymbol{H}_{k} \hat{\boldsymbol{X}}_{k-1}\right) \\ \boldsymbol{P}_{k}=\left(\boldsymbol{I}-\boldsymbol{K}_{k} \boldsymbol{H}_{k}\right) \boldsymbol{P}_{k-1}\end{array}\right. Kk=Pk1HkT(HkPk1HkT+Rk)1X^k=X^k1+Kk(ZkHkX^k1)Pk=(IKkHk)Pk1
状态的更新是上一时刻的状态 X ^ k − 1 \hat{\boldsymbol{X}}_{k-1} X^k1 加上基于当前时刻量测进行的修正 K k ( Z k − H k X ^ k − 1 ) \boldsymbol{K}_{k}\left(\boldsymbol{Z}_{k}-\boldsymbol{H}_{k} \hat{\boldsymbol{X}}_{k-1}\right) Kk(ZkHkX^k1) 。修正量是量测值与上一时刻的差值 ( Z k − H k X ^ k − 1 ) \left(\boldsymbol{Z}_{k}-\boldsymbol{H}_{k} \hat{\boldsymbol{X}}_{k-1}\right) (ZkHkX^k1) 乘以增益系数 K k \boldsymbol{K}_{k} Kk

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

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

相关文章

微信小程序nodejs+vue+uniapp大学体育场馆场地预约系统

开发语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 本文以nodejs为开发技术,一开始,本文就对系统内谈到的基本知识,从整体上进行了描述&#xff0c…

人事管理项目-部门数据删除

人事管理项目-部门数据删除 后端实现前端实现 Spring Boot是一个框架,一种全新的编程规范,它的产生简化了框架的使用,所谓简化是指简化了Spring众多框架中所需的大量且烦琐的配置文件,所以Spring Boot是一个服务于框架的框架&…

Netty之Channel解读

目录 channel 的主要作用 ChannelFuture CloseFuture 为什么要异步关闭 channel 的主要作用 close() 可以用来关闭 channelcloseFuture() 用来处理 channel 的关闭 sync 方法作用是同步等待 channel 关闭而 addListener 方法是异步等待 channel 关闭pipeline() 方法添加处理…

使用CodeAnt查找并修复IDE中的开源漏洞与许可证合规问题

不断加快的开发步伐正在将软件安全的责任转移到开发人员的桌面上,但是处理在下游构建和测试中检测到的安全问题可能是非常具有破坏性的。直至报告漏洞的时候,开发人员已经转移到他们的下一个任务。为了修复问题,他们必须中断正在做的事情&…

【OpenAI】Python:基于 Gym-CarRacing 的自动驾驶项目(4) | 车辆控制功能的实现

猛戳!跟哥们一起玩蛇啊 👉 《一起玩蛇》🐍 ​ 💭 写在前面:本篇是关于多伦多大学自动驾驶专业项目的博客。GYM-Box2D CarRacing 是一种在 OpenAI Gym 平台上开发和比较强化学习算法的模拟环境。它是流行的 Box2D 物…

Faiss PQ 乘积量化

Approximate Nearest Neighbor搜索简称ANN。 从宏观上看ANN brute-force搜索的方式是在全空间进行搜索,为了加快查找的速度,几乎所有的ANN方法都是通过对全空间分割,将其分割成很多小的子空间,在搜索的时候,通过某种…

爬虫分布式爬虫部署知识详解

分布式爬虫是指将一个爬虫任务分解成多个子任务,由多个爬虫节点同时执行,以提高爬取效率和速度的一种爬虫方式。下面是分布式爬虫部署的详细步骤: 确定爬虫任务:首先需要确定要爬取的网站和数据,以及需要爬取的频率和深…

公牛33W车充评测 | 拓尔微 IM2403+TMI3451快充方案实力在线

本期嘉宾是我们的老熟人 公牛PD 33W的车载充电器,此前我们对其进行过拆解,那它的充电表现和各方面性能到底如何呢? 下面我们将围绕协议测试、供电方案和产品测试展开评测解读,帮助小伙伴们全方位了解这款1A1C双口快充车充及相应的…

maven私服搭建详细教程(看完必会)

目录 1 为什么需要私服 2 Nexus私服 2.1 Nexus下载及登录 2.2 maven仓库 2.2.1 代理仓库 2.2.2 宿主仓库 2.2.3 仓库组 3 本地Maven下载构建 3.1 pom.xml方式 3.2 镜像方式 4 本地依赖发布到私服 4.1 maven部署到nexus私服 4.1.1 快照版本 ​4.1.2 release版本 4.2 …

Jar包下载失败的解决方案

Jar包下载失败的解决方案 🔎配置阿里源🔎重新下载Jar包🔎结尾 🔎配置阿里源 点击 Settings 搜索 Maven 进行如下修改 注意🍭 User settings file 路径与 Local repository 路径中应尽量避免出现中文 搜索 User setti…

如何提高高层住宅的消防安全性?安科瑞 许敏

1高层住宅消防安全隐患特点 根据我国对高层住宅的规定,建筑高度大于54m的住宅建筑(包括设置商业服务网点的住宅建筑)为一类高层住宅建筑,建筑高度大于27m,但不大于54m的住宅建筑(包括设置商业服务网点的住宅…

JAVA代码程序如何调用电商API,获取电商数据?

电商API是为了实现各个电商平台之间数据交换而提供的网络接口。Java是一种流行的编程语言,可以通过调用API来获得电商平台提供的各种服务,如商品列表、订单状态等。在这篇文章中,我们将详细介绍如何使用Java代码调用电商API。 1.寻找电商平台…

Python:Proportional Odds Model (POM)序分类比例几率模型

Github上你找不到 Logistic 函数求导看这里

责任链实战场景剖析、以及手写责任链

前言: 最早接触责任链这个设计模式,是我老早前看 Spring Aop 的源码的时候,Aop 的原理是遍历一根按照顺序装载好的 Advice(通知)拦截器链条,使Before、After 这些 Advice(通知)中的逻…

Accountill 使用 MongoDB、Express、React 和 Nodejs (MERN) 制作的全栈开源发票应用程序

Accountill 使用 MongoDB、Express、React 和 Nodejs (MERN) 制作的全栈开源发票应用程序。 介绍 使用 MERN 堆栈(MongoDB、Express、React 和 Nodejs)制作的全栈发票应用程序,专为自由职业者和小型企业设计,几乎可用于任何类型的…

职场中有哪些不成熟的表现

(点击即可收听) 大家好,这里是人人领读,今天给大家分享的,职场中有哪些不成熟的表现,希望能给大家带来一些启发. 1. 不主动汇报自己的工作进度 这个在职场当中,是非常忌讳的,一定要积极反馈,不能闷声憋着,说什么自己社恐,不敢跟上级领导交流,害怕被说 自己被分配的任务做到哪个…

仙人掌之歌——权力的游戏(4)

技术大培训 周一上午,陈速在工位上有些坐立不安,他也不知道自己在等待着什么。脑子里不可遏止地又想起上周五时,易伟成过来找自己说的那些没头没脑的话。易伟成先是询问直播串的参数细节,因为他要设计播放串加密方案,…

大数据架构系列:如何理解湖仓一体?

转载:如有侵权,告知即删除 引言 这十多年大数据技术蓬勃发展,从市场的表现来看基于大数据的数据存储和计算是非常有价值的,其中以云数据仓库为主打业务的公司Snowflake市值最高(截止当前449亿美元)&#x…

【Spring Cloud】演进与应用的分布式系统开发利器(文末赠书三本)

🌸作者简介:花想云,目前大二在读 ,C/C领域新星创作者、运维领域新星创作者、CSDN2023新星计划导师、CSDN内容合伙人、阿里云专家博主、华为云云享专家 🌸专栏推荐:C语言初阶系列 、C语言进阶系列 、C系列、…

亚马逊测评养号系统是怎么操作的?

亚马逊鲲鹏测评养号系统可以注册亚马逊买家号、智能一键养号、批量绑定收货地址及支付卡、自动点击广告、货比三家后自动下单、自动留评、QA等,功能非常齐全,基本上是一款从注册到下单于一体的自动化软件。 具体操作流程是先准备好一批账号(没…