深入浅出 GNSS 之序贯最小二乘:与批处理最小二乘、Kalman 滤波的关系

问题:什么是“序贯”?序贯最小二乘与批处理最小二乘何时等价?它与 Kalman 滤波是什么关系?


1. 什么是序贯最小二乘

序贯最小二乘是指:

观测数据分批到达时,不重新处理全部历史观测,而是在上一批估值及其不确定度的基础上,吸收新观测并更新结果。

可以把“序贯”理解为:

  • :观测按先后顺序到达;
  • :上一阶段的结果继续传递给下一阶段。

两种计算方式的区别如下。

批处理最小二乘

收集全部观测
→ 组成完整观测方程
→ 一次求解全部未知参数

序贯最小二乘

处理已有观测
→ 保存当前估值和协方差
→ 新观测到达
→ 更新估值和协方差

序贯最小二乘没有改变最小二乘准则,只改变了数据进入计算的方式。


2. 批处理加权最小二乘

2.1 线性观测模型

设线性观测模型为:

z=Hx+v\mathbf z = \mathbf H\mathbf x + \mathbf vz=Hx+v

其中:

  • z∈Rm\mathbf z\in\mathbb R^mzRm:观测向量;
  • H∈Rm×n\mathbf H\in\mathbb R^{m\times n}HRm×n:设计矩阵;
  • x∈Rn\mathbf x\in\mathbb R^nxRn:待估参数向量;
  • v∈Rm\mathbf v\in\mathbb R^mvRm:观测误差向量;
  • mmm:观测方程数;
  • nnn:未知参数数。

假设:

E(v)=0E(\mathbf v)=\mathbf 0E(v)=0

Cov⁡(v)=R\operatorname{Cov}(\mathbf v)=\mathbf RCov(v)=R

其中:

  • E(⋅)E(\cdot)E():数学期望;
  • Cov⁡(⋅)\operatorname{Cov}(\cdot)Cov():协方差;
  • R\mathbf RR:观测误差协方差矩阵,假设为正定矩阵。

2.2 加权最小二乘目标函数

加权最小二乘最小化:

J(x)=(z−Hx)TR−1(z−Hx)J(\mathbf x) = (\mathbf z-\mathbf H\mathbf x)^{\mathrm T} \mathbf R^{-1} (\mathbf z-\mathbf H\mathbf x)J(x)=(zHx)TR1(zHx)

其中:

  • J(x)J(\mathbf x)J(x):加权残差平方和;
  • z−Hx\mathbf z-\mathbf H\mathbf xzHx:观测残差;
  • 上标 T\mathrm TT:矩阵转置;
  • R−1\mathbf R^{-1}R1:观测权阵。

令目标函数对 x\mathbf xx 的导数为零:

HTR−1H x^=HTR−1z\mathbf H^{\mathrm T}\mathbf R^{-1}\mathbf H\,\hat{\mathbf x} = \mathbf H^{\mathrm T}\mathbf R^{-1}\mathbf zHTR1Hx^=HTR1z

定义信息矩阵和信息向量:

Λ=HTR−1H\boldsymbol\Lambda = \mathbf H^{\mathrm T}\mathbf R^{-1}\mathbf HΛ=HTR1H

η=HTR−1z\boldsymbol\eta = \mathbf H^{\mathrm T}\mathbf R^{-1}\mathbf zη=HTR1z

其中:

  • Λ\boldsymbol\LambdaΛ:信息矩阵,也就是正规矩阵;
  • η\boldsymbol\etaη:信息向量,也就是正规方程右端项。

H\mathbf HH 满列秩,则:

x^=Λ−1η=(HTR−1H)−1HTR−1z\boxed{ \hat{\mathbf x} = \boldsymbol\Lambda^{-1}\boldsymbol\eta = (\mathbf H^{\mathrm T}\mathbf R^{-1}\mathbf H)^{-1} \mathbf H^{\mathrm T}\mathbf R^{-1}\mathbf z }x^=Λ1η=(HTR1H)1HTR1z

R\mathbf RR 是真实观测协方差时,估值协方差为:

Cx^=(HTR−1H)−1=Λ−1\boxed{ \mathbf C_{\hat x} = (\mathbf H^{\mathrm T}\mathbf R^{-1}\mathbf H)^{-1} = \boldsymbol\Lambda^{-1} }Cx^=(HTR1H)1=Λ1

其中 Cx^\mathbf C_{\hat x}Cx^ 表示参数估值 x^\hat{\mathbf x}x^ 的协方差矩阵。


3. 序贯最小二乘的信息形式

3.1 将观测分批

设第 iii 批观测模型为:

zi=Hix+vi\mathbf z_i = \mathbf H_i\mathbf x + \mathbf v_izi=Hix+vi

其中:

  • zi\mathbf z_izi:第 iii 批观测;
  • Hi\mathbf H_iHi:第 iii 批设计矩阵;
  • vi\mathbf v_ivi:第 iii 批观测误差;
  • x\mathbf xx:各批共同估计的同一个静态参数向量。

先假设不同批次的误差互不相关:

Cov⁡(vi,vj)=0,i≠j\operatorname{Cov}(\mathbf v_i,\mathbf v_j) = \mathbf 0, \qquad i\ne jCov(vi,vj)=0,i=j

iii 批观测协方差为:

Cov⁡(vi)=Ri\operatorname{Cov}(\mathbf v_i) = \mathbf R_iCov(vi)=Ri

3.2 信息逐批累加

处理完前 k−1k-1k1 批后:

Λk−1=∑i=1k−1HiTRi−1Hi\boldsymbol\Lambda_{k-1} = \sum_{i=1}^{k-1} \mathbf H_i^{\mathrm T} \mathbf R_i^{-1} \mathbf H_iΛk1=i=1k1HiTRi1Hi

ηk−1=∑i=1k−1HiTRi−1zi\boldsymbol\eta_{k-1} = \sum_{i=1}^{k-1} \mathbf H_i^{\mathrm T} \mathbf R_i^{-1} \mathbf z_iηk1=i=1k1HiTRi1zi

加入第 kkk 批观测:

Λk=Λk−1+HkTRk−1Hk\boxed{ \boldsymbol\Lambda_k = \boldsymbol\Lambda_{k-1} + \mathbf H_k^{\mathrm T} \mathbf R_k^{-1} \mathbf H_k }Λk=Λk1+HkTRk1Hk

ηk=ηk−1+HkTRk−1zk\boxed{ \boldsymbol\eta_k = \boldsymbol\eta_{k-1} + \mathbf H_k^{\mathrm T} \mathbf R_k^{-1} \mathbf z_k }ηk=ηk1+HkTRk1zk

如果 Λk\boldsymbol\Lambda_kΛk 可逆,则:

x^k=Λk−1ηk\boxed{ \hat{\mathbf x}_k = \boldsymbol\Lambda_k^{-1} \boldsymbol\eta_k }x^k=Λk1ηk

Ck=Λk−1\boxed{ \mathbf C_k = \boldsymbol\Lambda_k^{-1} }Ck=Λk1

其中:

  • x^k\hat{\mathbf x}_kx^k:吸收前 kkk 批观测后的参数估值;
  • Ck\mathbf C_kCk:该估值的协方差。

这就是序贯最小二乘的信息形式:

新观测提供的新信息,直接累加到已有信息上。


4. 为什么信息可以相加

把全部观测堆叠为:

z=[z1z2⋮zk],H=[H1H2⋮Hk]\mathbf z = \begin{bmatrix} \mathbf z_1\\ \mathbf z_2\\ \vdots\\ \mathbf z_k \end{bmatrix} ,\qquad \mathbf H = \begin{bmatrix} \mathbf H_1\\ \mathbf H_2\\ \vdots\\ \mathbf H_k \end{bmatrix}z=z1z2zk,H=H1H2Hk

如果各批误差互不相关,总协方差为分块对角阵:

R=diag⁡(R1,R2,…,Rk)\mathbf R = \operatorname{diag} \left( \mathbf R_1, \mathbf R_2, \ldots, \mathbf R_k \right)R=diag(R1,R2,,Rk)

其中 diag⁡(⋅)\operatorname{diag}(\cdot)diag() 表示由各矩阵组成的分块对角矩阵。

于是:

HTR−1H=∑i=1kHiTRi−1Hi\mathbf H^{\mathrm T}\mathbf R^{-1}\mathbf H = \sum_{i=1}^{k} \mathbf H_i^{\mathrm T} \mathbf R_i^{-1} \mathbf H_iHTR1H=i=1kHiTRi1Hi

HTR−1z=∑i=1kHiTRi−1zi\mathbf H^{\mathrm T}\mathbf R^{-1}\mathbf z = \sum_{i=1}^{k} \mathbf H_i^{\mathrm T} \mathbf R_i^{-1} \mathbf z_iHTR1z=i=1kHiTRi1zi

因此:

在线性、静态且各批观测误差独立的条件下,序贯最小二乘只是逐批构造同一个正规方程,并不是近似算法。

相关观测不能简单累加

若:

Cov⁡(vi,vj)≠0\operatorname{Cov}(\mathbf v_i,\mathbf v_j) \ne \mathbf 0Cov(vi,vj)=0

则总协方差不是分块对角阵。

此时不能把各批信息简单相加,否则会错误计算信息量。需要采用:

  • 完整协方差矩阵;
  • 白化变换;
  • 条件协方差更新;
  • 增广状态;
  • 其他能够正确保留相关性的处理方法。

5. 从信息形式得到增益形式

由:

Ck−1=Λk−1−1\mathbf C_{k-1} = \boldsymbol\Lambda_{k-1}^{-1}Ck1=Λk11

可写出:

Ck=(Ck−1−1+HkTRk−1Hk)−1\mathbf C_k = \left( \mathbf C_{k-1}^{-1} + \mathbf H_k^{\mathrm T} \mathbf R_k^{-1} \mathbf H_k \right)^{-1}Ck=(Ck11+HkTRk1Hk)1

利用 Woodbury 矩阵恒等式,可得:

Ck=Ck−1−Ck−1HkT(HkCk−1HkT+Rk)−1HkCk−1\mathbf C_k = \mathbf C_{k-1} - \mathbf C_{k-1}\mathbf H_k^{\mathrm T} \left( \mathbf H_k\mathbf C_{k-1}\mathbf H_k^{\mathrm T} + \mathbf R_k \right)^{-1} \mathbf H_k\mathbf C_{k-1}Ck=Ck1Ck1HkT(HkCk1HkT+Rk)1HkCk1

定义新息协方差:

Sk=HkCk−1HkT+Rk\boxed{ \mathbf S_k = \mathbf H_k\mathbf C_{k-1}\mathbf H_k^{\mathrm T} + \mathbf R_k }Sk=HkCk1HkT+Rk

定义增益矩阵:

Kk=Ck−1HkTSk−1\boxed{ \mathbf K_k = \mathbf C_{k-1} \mathbf H_k^{\mathrm T} \mathbf S_k^{-1} }Kk=Ck1HkTSk1

其中:

  • Sk\mathbf S_kSk:新观测残差的不确定度;
  • Kk\mathbf K_kKk:新观测对参数估值的修正权重。

协方差更新为:

Ck=(I−KkHk)Ck−1\boxed{ \mathbf C_k = (\mathbf I-\mathbf K_k\mathbf H_k) \mathbf C_{k-1} }Ck=(IKkHk)Ck1

其中 I\mathbf II 为单位矩阵。

该简化公式在精确计算且 Kk\mathbf K_kKk 取上述最优增益时成立。


6. 参数估值的更新公式

处理完前 k−1k-1k1 批后,已有结果:

x^k−1,Ck−1\hat{\mathbf x}_{k-1}, \qquad \mathbf C_{k-1}x^k1,Ck1

可看成历史观测的等价信息。

加入第 kkk 批观测后,目标函数可写为:

Jk(x)=(x−x^k−1)TCk−1−1(x−x^k−1)+(zk−Hkx)TRk−1(zk−Hkx)\begin{aligned} J_k(\mathbf x) ={}& (\mathbf x-\hat{\mathbf x}_{k-1})^{\mathrm T} \mathbf C_{k-1}^{-1} (\mathbf x-\hat{\mathbf x}_{k-1})\\ &+ (\mathbf z_k-\mathbf H_k\mathbf x)^{\mathrm T} \mathbf R_k^{-1} (\mathbf z_k-\mathbf H_k\mathbf x) \end{aligned}Jk(x)=(xx^k1)TCk11(xx^k1)+(zkHkx)TRk1(zkHkx)

其中:

  • 第一项:历史观测对参数形成的等价约束;
  • 第二项:新观测的加权残差平方和。

在高斯模型下,也可以把第一项解释为高斯先验对应的二次型;但序贯最小二乘本身并不要求必须使用概率语言。

定义新息:

rk=zk−Hkx^k−1\boxed{ \mathbf r_k = \mathbf z_k - \mathbf H_k\hat{\mathbf x}_{k-1} }rk=zkHkx^k1

其中:

  • Hkx^k−1\mathbf H_k\hat{\mathbf x}_{k-1}Hkx^k1:根据旧估值预测的新观测;
  • rk\mathbf r_krk:实际新观测与预测观测之差。

参数更新为:

x^k=x^k−1+Kkrk\boxed{ \hat{\mathbf x}_k = \hat{\mathbf x}_{k-1} + \mathbf K_k\mathbf r_k }x^k=x^k1+Kkrk

也就是:

新估值=旧估值+增益×新息\boxed{ \text{新估值} = \text{旧估值} + \text{增益} \times \text{新息} }新估值=旧估值+增益×新息


7. 序贯最小二乘完整公式

kkk 批观测模型:

zk=Hkx+vk\mathbf z_k = \mathbf H_k\mathbf x + \mathbf v_kzk=Hkx+vk

Cov⁡(vk)=Rk\operatorname{Cov}(\mathbf v_k) = \mathbf R_kCov(vk)=Rk

新息:

rk=zk−Hkx^k−1\mathbf r_k = \mathbf z_k - \mathbf H_k\hat{\mathbf x}_{k-1}rk=zkHkx^k1

新息协方差:

Sk=HkCk−1HkT+Rk\mathbf S_k = \mathbf H_k\mathbf C_{k-1}\mathbf H_k^{\mathrm T} + \mathbf R_kSk=HkCk1HkT+Rk

增益:

Kk=Ck−1HkTSk−1\mathbf K_k = \mathbf C_{k-1} \mathbf H_k^{\mathrm T} \mathbf S_k^{-1}Kk=Ck1HkTSk1

参数更新:

x^k=x^k−1+Kkrk\boxed{ \hat{\mathbf x}_k = \hat{\mathbf x}_{k-1} + \mathbf K_k\mathbf r_k }x^k=x^k1+Kkrk

协方差简化更新:

Ck=(I−KkHk)Ck−1\boxed{ \mathbf C_k = (\mathbf I-\mathbf K_k\mathbf H_k) \mathbf C_{k-1} }Ck=(IKkHk)Ck1

数值实现中更推荐 Joseph 形式:

Ck=(I−KkHk)Ck−1(I−KkHk)T+KkRkKkT\boxed{ \begin{aligned} \mathbf C_k ={}& (\mathbf I-\mathbf K_k\mathbf H_k) \mathbf C_{k-1} (\mathbf I-\mathbf K_k\mathbf H_k)^{\mathrm T}\\ &+ \mathbf K_k \mathbf R_k \mathbf K_k^{\mathrm T} \end{aligned} }Ck=(IKkHk)Ck1(IKkHk)T+KkRkKkT

Joseph 形式更有利于在有限精度计算中保持:

  • 协方差矩阵的对称性;
  • 协方差矩阵的半正定性。

上一批估值和协方差

预测新观测

第 k 批观测

计算新息

计算 S 和 K

更新参数

更新协方差

进入下一批


8. 标量例子:反复测量一个常数

设反复测量未知常数 xxx

zi=x+viz_i = x + v_izi=x+vi

iii 次观测误差方差为:

Var⁡(vi)=σi2\operatorname{Var}(v_i) = \sigma_i^2Var(vi)=σi2

定义权:

wi=1σi2w_i = \frac{1}{\sigma_i^2}wi=σi21

其中:

  • ziz_izi:第 iii 次观测值;
  • viv_ivi:第 iii 次观测误差;
  • σi2\sigma_i^2σi2:观测误差方差;
  • wiw_iwi:观测权,方差越小,权越大。

kkk 次观测的加权平均为:

x^k=∑i=1kwizi∑i=1kwi\hat x_k = \frac{ \sum_{i=1}^{k} w_i z_i }{ \sum_{i=1}^{k} w_i }x^k=i=1kwii=1kwizi

令前 k−1k-1k1 次观测的累计权为:

Wk−1=∑i=1k−1wiW_{k-1} = \sum_{i=1}^{k-1}w_iWk1=i=1k1wi

则:

x^k=Wk−1x^k−1+wkzkWk−1+wk\hat x_k = \frac{ W_{k-1}\hat x_{k-1} + w_kz_k }{ W_{k-1}+w_k }x^k=Wk1+wkWk1x^k1+wkzk

整理为:

x^k=x^k−1+Kk(zk−x^k−1)\boxed{ \hat x_k = \hat x_{k-1} + K_k \left( z_k-\hat x_{k-1} \right) }x^k=x^k1+Kk(zkx^k1)

其中:

Kk=wkWk−1+wkK_k = \frac{ w_k }{ W_{k-1}+w_k }Kk=Wk1+wkwk

解释如下:

  • zk−x^k−1z_k-\hat x_{k-1}zkx^k1:新观测与旧估值之差;
  • KkK_kKk:新观测修正旧估值的比例;
  • 新观测越精确,wkw_kwk 越大,KkK_kKk 越大;
  • 历史信息越多,Wk−1W_{k-1}Wk1 越大,旧估值越稳定。

矩阵形式的序贯最小二乘,就是这一加权平均思想的高维推广。


9. 与批处理最小二乘何时等价

在线性模型下,满足以下条件时,两者严格等价:

  1. 各批估计的是同一个不变参数向量;
  2. 使用完全相同的观测数据;
  3. 使用完全相同的随机模型;
  4. 各批观测误差独立,或相关性已被正确处理;
  5. 使用相同的先验或初始信息;
  6. 不使用遗忘因子;
  7. 不进行与处理顺序有关的鲁棒调权、粗差剔除或状态重置;
  8. 忽略浮点舍入造成的微小差异。

此时:

x^seq=x^batch\boxed{ \hat{\mathbf x}_{\mathrm{seq}} = \hat{\mathbf x}_{\mathrm{batch}} }x^seq=x^batch

Cseq=Cbatch\boxed{ \mathbf C_{\mathrm{seq}} = \mathbf C_{\mathrm{batch}} }Cseq=Cbatch

在精确算术下,独立观测的处理顺序不影响最终结果。


10. 先验与初始化必须一致

若序贯算法使用初始信息:

x∼N(x0,C0)\mathbf x \sim N(\mathbf x_0,\mathbf C_0)xN(x0,C0)

在高斯解释下:

  • x0\mathbf x_0x0:先验均值;
  • C0\mathbf C_0C0:先验协方差。

对应信息为:

Λ0=C0−1\boldsymbol\Lambda_0 = \mathbf C_0^{-1}Λ0=C01

η0=C0−1x0\boldsymbol\eta_0 = \mathbf C_0^{-1}\mathbf x_0η0=C01x0

序贯结果等价于包含同一先验项的批处理估计:

J(x)=(x−x0)TC0−1(x−x0)+(z−Hx)TR−1(z−Hx)\begin{aligned} J(\mathbf x) ={}& (\mathbf x-\mathbf x_0)^{\mathrm T} \mathbf C_0^{-1} (\mathbf x-\mathbf x_0)\\ &+ (\mathbf z-\mathbf H\mathbf x)^{\mathrm T} \mathbf R^{-1} (\mathbf z-\mathbf H\mathbf x) \end{aligned}J(x)=(xx0)TC01(xx0)+(zHx)TR1(zHx)

如果批处理没有先验,而序贯算法使用了强先验,两者不会等价。

无先验初始化

理论上的无信息初始化可写为:

Λ0=0\boldsymbol\Lambda_0 = \mathbf 0Λ0=0

η0=0\boldsymbol\eta_0 = \mathbf 0η0=0

但在累计信息达到满秩之前,Λk\boldsymbol\Lambda_kΛk 不可逆,不能直接得到唯一解。

工程中常采用:

  • 先用一批满秩观测初始化;
  • 弥散初始化;
  • QR 或平方根信息方法;
  • 明确的弱先验。

11. 哪些情况会导致不等价

11.1 批间观测相关

如果不同批观测存在相关性,却仍按独立观测累加信息,会错误高估信息量。

11.2 非线性模型采用不同线性化点

非线性观测模型为:

zk=hk(x)+vk\mathbf z_k = \mathbf h_k(\mathbf x) + \mathbf v_kzk=hk(x)+vk

其中 hk(⋅)\mathbf h_k(\cdot)hk() 为非线性观测函数。

单遍序贯线性化可能在不同估值处处理不同批观测;批处理迭代则可能反复使用统一线性化点重新处理全部观测。

因此,两者一般不再严格等价。

11.3 遗忘因子

递推最小二乘常使用遗忘因子:

0<λ≤10<\lambda\le 10<λ1

例如在新观测到达前进行:

Ck∣k−1=1λCk−1\mathbf C_{k\vert{}k-1} = \frac{1}{\lambda} \mathbf C_{k-1}Ckk1=λ1Ck1

其中:

  • λ\lambdaλ:遗忘因子;
  • λ=1\lambda=1λ=1:不遗忘历史信息;
  • λ<1\lambda<1λ<1:逐渐降低历史信息的影响。

λ<1\lambda<1λ<1 时,算法不再等价于对全部历史观测进行普通批处理最小二乘。

11.4 顺序相关的质量控制

如果每批更新后立即进行:

  • 粗差剔除;
  • 鲁棒降权;
  • 状态重置;
  • 周跳处理;
  • 数据门限判断;

最终结果可能依赖观测处理顺序。


12. Kalman 滤波的模型

Kalman 滤波同时包含状态方程和量测方程。

状态方程

xk=Fk−1xk−1+wk−1\mathbf x_k = \mathbf F_{k-1}\mathbf x_{k-1} + \mathbf w_{k-1}xk=Fk1xk1+wk1

量测方程

zk=Hkxk+vk\mathbf z_k = \mathbf H_k\mathbf x_k + \mathbf v_kzk=Hkxk+vk

其中:

  • xk\mathbf x_kxk:第 kkk 时刻状态;
  • Fk−1\mathbf F_{k-1}Fk1:状态转移矩阵;
  • wk−1\mathbf w_{k-1}wk1:过程噪声;
  • Qk−1=Cov⁡(wk−1)\mathbf Q_{k-1}=\operatorname{Cov}(\mathbf w_{k-1})Qk1=Cov(wk1):过程噪声协方差;
  • zk\mathbf z_kzk:第 kkk 时刻观测;
  • Hk\mathbf H_kHk:量测设计矩阵;
  • vk\mathbf v_kvk:量测噪声;
  • Rk=Cov⁡(vk)\mathbf R_k=\operatorname{Cov}(\mathbf v_k)Rk=Cov(vk):量测噪声协方差。

标准 Kalman 滤波通常还假设:

  • 初始状态误差与各时刻过程噪声、量测噪声互不相关;
  • 不同时刻的过程噪声互不相关;
  • 不同时刻的量测噪声互不相关;
  • 同一时刻过程噪声与量测噪声互不相关。

若这些相关性存在,应在模型中显式处理,不能直接套用最简单公式。


13. Kalman 滤波两步递推

13.1 时间更新

状态预测:

x^k∣k−1=Fk−1x^k−1∣k−1\boxed{ \hat{\mathbf x}_{k\vert{}k-1} = \mathbf F_{k-1} \hat{\mathbf x}_{k-1\vert{}k-1} }x^kk1=Fk1x^k1∣k1

协方差预测:

Ck∣k−1=Fk−1Ck−1∣k−1Fk−1T+Qk−1\boxed{ \mathbf C_{k\vert{}k-1} = \mathbf F_{k-1} \mathbf C_{k-1\vert{}k-1} \mathbf F_{k-1}^{\mathrm T} + \mathbf Q_{k-1} }Ckk1=Fk1Ck1∣k1Fk1T+Qk1

其中:

  • k∣k−1k\vert{}k-1kk1:利用截至 k−1k-1k1 时刻的信息预测第 kkk 时刻;
  • k∣kk\vert{}kkk:利用截至第 kkk 时刻的信息得到后验估值。

13.2 量测更新

新息:

rk=zk−Hkx^k∣k−1\mathbf r_k = \mathbf z_k - \mathbf H_k \hat{\mathbf x}_{k\vert{}k-1}rk=zkHkx^kk1

新息协方差:

Sk=HkCk∣k−1HkT+Rk\mathbf S_k = \mathbf H_k \mathbf C_{k\vert{}k-1} \mathbf H_k^{\mathrm T} + \mathbf R_kSk=HkCkk1HkT+Rk

Kalman 增益:

Kk=Ck∣k−1HkTSk−1\mathbf K_k = \mathbf C_{k\vert{}k-1} \mathbf H_k^{\mathrm T} \mathbf S_k^{-1}Kk=Ckk1HkTSk1

状态更新:

x^k∣k=x^k∣k−1+Kkrk\boxed{ \hat{\mathbf x}_{k\vert{}k} = \hat{\mathbf x}_{k\vert{}k-1} + \mathbf K_k\mathbf r_k }x^kk=x^kk1+Kkrk

协方差更新:

Ck∣k=(I−KkHk)Ck∣k−1\boxed{ \mathbf C_{k\vert{}k} = (\mathbf I-\mathbf K_k\mathbf H_k) \mathbf C_{k\vert{}k-1} }Ckk=(IKkHk)Ckk1

上一时刻后验估值

状态预测 F

协方差预测 F 和 Q

预测当前观测

当前观测

计算新息

计算增益

更新状态

更新协方差

进入下一历元


14. 序贯最小二乘与 Kalman 滤波的关系

14.1 静态状态时等价

若参数不随时间变化:

Fk−1=I\mathbf F_{k-1} = \mathbf IFk1=I

Qk−1=0\mathbf Q_{k-1} = \mathbf 0Qk1=0

则:

x^k∣k−1=x^k−1∣k−1\hat{\mathbf x}_{k\vert{}k-1} = \hat{\mathbf x}_{k-1\vert{}k-1}x^kk1=x^k1∣k1

Ck∣k−1=Ck−1∣k−1\mathbf C_{k\vert{}k-1} = \mathbf C_{k-1\vert{}k-1}Ckk1=Ck1∣k1

Kalman 滤波只剩量测更新。

在以下条件相同时:

  • 初始估值;
  • 初始协方差或初始信息;
  • 观测模型;
  • 观测协方差;
  • 噪声相关性处理;

有:

静态 Kalman 滤波≡序贯最小二乘\boxed{ \text{静态 Kalman 滤波} \equiv \text{序贯最小二乘} }静态 Kalman 滤波序贯最小二乘

若还要与无先验的普通批处理最小二乘等价,初始化也必须对应无信息先验,或由一批满秩观测完成初始化。

14.2 动态状态时不等价于静态序贯最小二乘

当:

Fk−1≠I\mathbf F_{k-1}\ne\mathbf IFk1=I

或:

Qk−1≠0\mathbf Q_{k-1}\ne\mathbf 0Qk1=0

Kalman 滤波会传播状态,并通过过程噪声描述模型误差。

例如常速度模型:

[pkvk]=[IΔt I0I][pk−1vk−1]+wk−1\begin{bmatrix} \mathbf p_k\\ \mathbf v_k \end{bmatrix} = \begin{bmatrix} \mathbf I & \Delta t\,\mathbf I\\ \mathbf 0 & \mathbf I \end{bmatrix} \begin{bmatrix} \mathbf p_{k-1}\\ \mathbf v_{k-1} \end{bmatrix} + \mathbf w_{k-1}[pkvk]=[I0ΔtII][pk1vk1]+wk1

其中:

  • pk\mathbf p_kpk:第 kkk 时刻位置;
  • vk\mathbf v_kvk:第 kkk 时刻速度;
  • Δt\Delta tΔt:相邻历元时间间隔;
  • wk−1\mathbf w_{k-1}wk1:运动模型误差。

此时:

动态 Kalman 滤波≢静态序贯最小二乘\boxed{ \text{动态 Kalman 滤波} \not\equiv \text{静态序贯最小二乘} }动态 Kalman 滤波静态序贯最小二乘

14.3 Kalman 滤波仍具有序贯最小二乘结构

在线性模型和随机模型一致时,Kalman 滤波可以由动态系统的批处理加权最小二乘递推推导出来。

因此:

  • 静态序贯最小二乘估计一个不变参数;
  • Kalman 滤波估计随时间变化的状态序列;
  • 两者的量测更新公式具有相同结构。

还应区分:

  • 滤波:只使用当前及过去观测;
  • 平滑:还使用未来观测修正过去状态。

所以某时刻的滤波估值通常不等于利用全部未来数据得到的平滑估值。


15. 三种方法对比

对比项批处理最小二乘序贯最小二乘Kalman 滤波
数据处理方式全部观测一次处理新观测逐批更新按时间递推
典型估计对象静态参数或整段轨迹静态参数动态状态
状态转移矩阵 F\mathbf FF通常没有通常没有
过程噪声 Q\mathbf QQ通常没有通常为 0
时间预测
量测更新一次完成每批执行每历元执行
历史数据保存通常保存全部数据可只保存等价信息保存上一时刻状态和协方差
全局重算方便较困难通常需平滑或重处理
静态线性条件下基准解与批处理等价可退化为序贯最小二乘

序贯方法保存的等价信息可以是:

x^k−1,Ck−1\hat{\mathbf x}_{k-1}, \qquad \mathbf C_{k-1}x^k1,Ck1

也可以是:

Λk−1,ηk−1\boldsymbol\Lambda_{k-1}, \qquad \boldsymbol\eta_{k-1}Λk1,ηk1


16. GNSS 中的使用边界

16.1 适合序贯最小二乘的场景

适合的基本条件是:

参数在处理期间基本不变
+
观测持续到达
+
希望在线更新

典型应用包括:

  • 静态控制网追加观测;
  • 固定传感器零偏估计;
  • 比例因子和安装角标定;
  • 稳定硬件延迟估计;
  • 在线线性回归;
  • 嵌入式设备中的低存储估计。

16.2 GNSS 静态坐标在线估计

若接收机保持静止,可把坐标写为:

x=[XYZ]T\mathbf x = \begin{bmatrix} X & Y & Z \end{bmatrix}^{\mathrm T}x=[XYZ]T

其中:

  • X,Y,ZX,Y,ZX,Y,Z:接收机在地心地固坐标系中的三维坐标。

但原始 GNSS 观测通常还包含:

  • 接收机钟差;
  • 对流层延迟;
  • 电离层延迟;
  • 载波相位模糊度;
  • 硬件偏差。

这些参数中有些随历元变化,有些只在连续弧段内近似为常数。

因此,不能仅写一个静态三维坐标状态就直接处理完整 PPP 观测。需要:

  • 消除历元相关参数;
  • 或把它们纳入完整状态模型。

16.3 PPP 为什么通常使用 Kalman 滤波

PPP 常见状态包括:

  • 位置和速度;
  • 接收机钟差;
  • 对流层湿延迟;
  • 电离层延迟;
  • 载波相位模糊度。

其中:

  • 钟差通常快速变化;
  • 对流层湿延迟常按随机游走建模;
  • 非组合 PPP 中电离层延迟随时间变化;
  • 模糊度在连续跟踪弧段内近似为常数,周跳后需要重置;
  • 动态载体的位置和速度随时间变化。

因此完整 PPP 通常采用 Kalman 滤波、扩展 Kalman 滤波或滑动窗口优化。


17. 初始化与数值实现

17.1 先用满秩观测初始化

若第 0 批观测足以唯一确定参数:

x^0=(H0TR0−1H0)−1H0TR0−1z0\hat{\mathbf x}_0 = (\mathbf H_0^{\mathrm T}\mathbf R_0^{-1}\mathbf H_0)^{-1} \mathbf H_0^{\mathrm T}\mathbf R_0^{-1}\mathbf z_0x^0=(H0TR01H0)1H0TR01z0

C0=(H0TR0−1H0)−1\mathbf C_0 = (\mathbf H_0^{\mathrm T}\mathbf R_0^{-1}\mathbf H_0)^{-1}C0=(H0TR01H0)1

这是较稳妥的工程初始化方法。

17.2 弱先验初始化

可设置:

C0=αI\mathbf C_0 = \alpha\mathbf IC0=αI

其中:

  • α\alphaα:较大的正数;
  • I\mathbf II:单位矩阵。

较大的 α\alphaα 表示初始参数很不确定。

但不能机械地把 α\alphaα 设置得无限大,否则会造成数值病态。

17.3 不要显式求逆

公式中的:

Sk−1\mathbf S_k^{-1}Sk1

在程序中通常不应显式计算逆矩阵,而应求解线性方程。

常用方法包括:

  • Cholesky 分解;
  • QR 分解;
  • LDLT^{\mathrm T}T 分解;
  • 专用对称线性方程求解器。

17.4 保持协方差对称

可采用 Joseph 形式,必要时进行数值对称化:

Ck←12(Ck+CkT)\mathbf C_k \leftarrow \frac{1}{2} \left( \mathbf C_k+\mathbf C_k^{\mathrm T} \right)Ck21(Ck+CkT)

17.5 病态问题使用平方根方法

当参数尺度差异大或设计矩阵病态时,可采用:

  • QR 序贯最小二乘;
  • 平方根信息滤波;
  • UD 分解;
  • 奇异值分解。

这些方法通常比直接传播正规矩阵或协方差矩阵更稳定。


18. 方法选择

参数基本不变 + 观测持续到达
→ 序贯最小二乘

状态随时间变化 + 有状态转移和过程噪声
→ Kalman滤波

需要统一重线性化、全局粗差回溯或整体重算
→ 批处理最小二乘或滑动窗口优化

在线性、静态、随机模型和先验信息完全一致时:

序贯最小二乘≡批处理加权最小二乘\boxed{ \text{序贯最小二乘} \equiv \text{批处理加权最小二乘} }序贯最小二乘批处理加权最小二乘

当 Kalman 滤波满足:

F=I,Q=0\mathbf F=\mathbf I, \qquad \mathbf Q=\mathbf 0F=I,Q=0

并且初始化、观测模型、随机模型和相关性处理相同时:

静态 Kalman 滤波≡序贯最小二乘\boxed{ \text{静态 Kalman 滤波} \equiv \text{序贯最小二乘} }静态 Kalman 滤波序贯最小二乘

一般动态系统中,Kalman 滤波还包含状态预测和过程噪声,不能与静态序贯最小二乘简单等同。

线性模型、相同随机模型和先验

全部观测一次处理

批处理最小二乘

同一静态参数逐批更新

序贯最小二乘

加入状态转移 F

加入过程噪声 Q

Kalman滤波

F=I 且 Q=0?

退化为静态序贯最小二乘

估计动态状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱刷碗的苏泓舒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值