平方根信息滤波:矩阵推导及 GNSS 参数估计应用

本文主线:信息矩阵 → 平方根信息方程 → 白化观测 → QR 量测更新 → 增广时间更新 → GNSS 参数估计


1. 结论

平方根信息滤波的英文是:

text 复制代码
Square-Root Information Filter,SRIF

它是线性 Kalman/LMMSE 估计的一种因子化数值实现。

SRIF 通常不直接递推协方差矩阵:

P\mathbf PP

也不显式形成完整信息矩阵:

Λ=P−1\boldsymbol\Lambda=\mathbf P^{-1}Λ=P−1

而是维护上三角平方根信息因子:

Λ=RxTRx\boxed{ \boldsymbol\Lambda = \mathbf R_x^{\mathrm T}\mathbf R_x }Λ=RxTRx

以及平方根信息向量:

zx=Rxx^\boxed{ \mathbf z_x = \mathbf R_x\hat{\mathbf x} }zx=Rxx^

状态通过上三角方程求得:

Rxx^=zx\boxed{ \mathbf R_x\hat{\mathbf x} = \mathbf z_x }Rxx^=zx

其中:

  • P\mathbf PP:状态估计误差协方差;
  • Λ\boldsymbol\LambdaΛ:信息矩阵,也称精度矩阵;
  • Rx\mathbf R_xRx:上三角平方根信息因子;
  • x^\hat{\mathbf x}x^:状态估计;
  • zx\mathbf z_xzx:平方根信息向量。

一句话理解:

SRIF 把动态状态估计组织成"白化最小二乘 + QR 正交消元"。


2. "平方根信息"怎样理解

"平方根信息"可以拆成:

text 复制代码
信息 + 平方根因子

2.1 信息矩阵

当协方差矩阵 P\mathbf PP 正定时,信息矩阵定义为:

Λ=P−1\boxed{ \boldsymbol\Lambda = \mathbf P^{-1} }Λ=P−1

在一维情况下:

Λ=1σ2\Lambda=\frac{1}{\sigma^2}Λ=σ21

其中:

  • σ2\sigma^2σ2:方差;
  • Λ\LambdaΛ:信息或精度。

因此,在同一参数方向上:

text 复制代码
方差越小
→ 不确定度越小
→ 信息越大

对矩阵不能简单比较每个元素的大小,应在半正定矩阵偏序意义下比较信息多少。

2.2 平方根信息因子

SRIF 保存:

Λ=RxTRx\boxed{ \boldsymbol\Lambda = \mathbf R_x^{\mathrm T}\mathbf R_x }Λ=RxTRx

这里的"平方根"不是逐元素开平方,也不要求使用对称主平方根。

它表示:

用一个三角因子的转置与其自身相乘,恢复信息矩阵。

2.3 平方根信息向量

普通信息向量为:

η=Λx^\boxed{ \boldsymbol\eta = \boldsymbol\Lambda\hat{\mathbf x} }η=Λx^

平方根信息向量为:

zx=Rxx^\boxed{ \mathbf z_x = \mathbf R_x\hat{\mathbf x} }zx=Rxx^

二者满足:

η=RxTzx\boxed{ \boldsymbol\eta = \mathbf R_x^{\mathrm T}\mathbf z_x }η=RxTzx


3. 信息形式的适用条件

普通信息矩阵:

Λ=P−1\boldsymbol\Lambda=\mathbf P^{-1}Λ=P−1

要求 P\mathbf PP 可逆。

如果存在:

  • 严格固定参数;
  • 零方差方向;
  • 基准未定义;
  • 不可观参数;
  • 秩亏先验;

则 P\mathbf PP 可能奇异,普通信息矩阵不再存在。

此时需要采用:

  • 精确约束方程;
  • 矩形平方根信息因子;
  • 秩揭示 QR;
  • SVD;
  • 广义逆;
  • 重新参数化;
  • 补充基准约束。

以下基础推导先假设协方差正定、平方根信息因子满秩。


4. 一维直观例子

设:

x^=10,P=4\hat x=10, \qquad P=4x^=10,P=4

信息为:

Λ=P−1=14\Lambda=P^{-1}=\frac14Λ=P−1=41

可取平方根信息因子:

Rx=12R_x=\frac12Rx=21

平方根信息向量为:

zx=Rxx^=12×10=5z_x=R_x\hat x = \frac12\times10 = 5zx=Rxx^=21×10=5

状态由:

Rxx^=zxR_x\hat x=z_xRxx^=zx

恢复:

12x^=5⟹x^=10\frac12\hat x=5 \quad\Longrightarrow\quad \hat x=1021x^=5⟹x^=10


5. 从高斯分布理解信息形式

设状态服从高斯分布:

x∼N(x^,P)\mathbf x \sim \mathcal N \left( \hat{\mathbf x}, \mathbf P \right)x∼N(x^,P)

其概率密度中与 x\mathbf xx 有关的指数项为:

−12(x−x^)TP−1(x−x^)-\frac12 \left( \mathbf x-\hat{\mathbf x} \right)^{\mathrm T} \mathbf P^{-1} \left( \mathbf x-\hat{\mathbf x} \right)−21(x−x^)TP−1(x−x^)

定义:

Λ=P−1\boldsymbol\Lambda=\mathbf P^{-1}Λ=P−1

展开二次型:

(x−x^)TΛ(x−x^)=xTΛx−2x^TΛx+x^TΛx^\begin{aligned} &\left( \mathbf x-\hat{\mathbf x} \right)^{\mathrm T} \boldsymbol\Lambda \left( \mathbf x-\hat{\mathbf x} \right)\\ &= \mathbf x^{\mathrm T}\boldsymbol\Lambda\mathbf x - 2\hat{\mathbf x}^{\mathrm T} \boldsymbol\Lambda\mathbf x + \hat{\mathbf x}^{\mathrm T} \boldsymbol\Lambda\hat{\mathbf x} \end{aligned}(x−x^)TΛ(x−x^)=xTΛx−2x^TΛx+x^TΛx^

令:

η=Λx^\boldsymbol\eta = \boldsymbol\Lambda\hat{\mathbf x}η=Λx^

则同一个高斯分布可以表示为:

text 复制代码
均值 + 协方差

或:

text 复制代码
信息向量 + 信息矩阵

6. 信息形式与最小二乘

若:

Λ=RxTRx\boldsymbol\Lambda = \mathbf R_x^{\mathrm T}\mathbf R_xΛ=RxTRx

且:

zx=Rxx^\mathbf z_x = \mathbf R_x\hat{\mathbf x}zx=Rxx^

则状态估计等价于:

x^=arg⁡min⁡x∥Rxx−zx∥22\boxed{ \hat{\mathbf x} = \arg\min_{\mathbf x} \left\| \mathbf R_x\mathbf x-\mathbf z_x \right\|_2^2 }x^=argxmin∥Rxx−zx∥22

定义目标函数:

J(x)=(Rxx−zx)T(Rxx−zx)J(\mathbf x) = \left( \mathbf R_x\mathbf x-\mathbf z_x \right)^{\mathrm T} \left( \mathbf R_x\mathbf x-\mathbf z_x \right)J(x)=(Rxx−zx)T(Rxx−zx)

对 x\mathbf xx 求梯度:

∇xJ=2RxT(Rxx−zx)\nabla_{\mathbf x}J = 2\mathbf R_x^{\mathrm T} \left( \mathbf R_x\mathbf x-\mathbf z_x \right)∇xJ=2RxT(Rxx−zx)

令梯度为零:

RxTRxx=RxTzx\mathbf R_x^{\mathrm T}\mathbf R_x\mathbf x = \mathbf R_x^{\mathrm T}\mathbf z_xRxTRxx=RxTzx

即:

Λx=η\boldsymbol\Lambda\mathbf x = \boldsymbol\etaΛx=η

若 Rx\mathbf R_xRx 非奇异,可直接解上三角方程:

Rxx^=zx\boxed{ \mathbf R_x\hat{\mathbf x} = \mathbf z_x }Rxx^=zx

无需计算 Λ−1\boldsymbol\Lambda^{-1}Λ−1。


7. 为什么使用 QR 而不是法方程

设白化后的线性模型为:

Ax≈b\mathbf A\mathbf x \approx \mathbf bAx≈b

法方程为:

ATAx=ATb\mathbf A^{\mathrm T}\mathbf A\mathbf x = \mathbf A^{\mathrm T}\mathbf bATAx=ATb

若 A\mathbf AA 满列秩,则二范数条件数满足:

κ2(ATA)=κ22(A)\boxed{ \kappa_2 \left( \mathbf A^{\mathrm T}\mathbf A \right) = \kappa_2^2(\mathbf A) }κ2(ATA)=κ22(A)

因此,显式形成法方程会放大病态性。

SRIF 直接对 A\mathbf AA 进行 QR、Householder 或 Givens 正交变换,不显式形成:

ATA\mathbf A^{\mathrm T}\mathbf AATA

通常具有更好的舍入误差性质。



第一部分:SRIF 量测更新

8. 线性观测模型

设:

y=Hx+v\mathbf y = \mathbf H\mathbf x+\mathbf vy=Hx+v

其中:

  • y∈Rm\mathbf y\in\mathbb R^my∈Rm:观测向量;
  • H∈Rm×n\mathbf H\in\mathbb R^{m\times n}H∈Rm×n:设计矩阵;
  • x∈Rn\mathbf x\in\mathbb R^nx∈Rn:待估状态;
  • v\mathbf vv:观测噪声。

假设:

E⁡(v)=0\operatorname E(\mathbf v)=\mathbf0E(v)=0

Cov⁡(v)=Rv\operatorname{Cov}(\mathbf v) = \mathbf R_vCov(v)=Rv

这里用 Rv\mathbf R_vRv 表示观测噪声协方差,避免与平方根信息因子 Rx\mathbf R_xRx 混淆。


9. 观测白化

若 Rv\mathbf R_vRv 正定,可进行 Cholesky 分解:

Rv=LvLvT\mathbf R_v = \mathbf L_v\mathbf L_v^{\mathrm T}Rv=LvLvT

定义白化算子:

Wv=Lv−1\mathbf W_v = \mathbf L_v^{-1}Wv=Lv−1

左乘观测方程:

Wvy=WvHx+Wvv\mathbf W_v\mathbf y = \mathbf W_v\mathbf H\mathbf x + \mathbf W_v\mathbf vWvy=WvHx+Wvv

白化噪声协方差为:

Cov⁡(Wvv)=WvRvWvT=I\begin{aligned} \operatorname{Cov} \left( \mathbf W_v\mathbf v \right) &= \mathbf W_v \mathbf R_v \mathbf W_v^{\mathrm T}\\ &= \mathbf I \end{aligned}Cov(Wvv)=WvRvWvT=I

定义:

y~=Wvy\tilde{\mathbf y} = \mathbf W_v\mathbf yy~=Wvy

H~=WvH\tilde{\mathbf H} = \mathbf W_v\mathbf HH~=WvH

得到单位协方差观测:

y~=H~x+v~\tilde{\mathbf y} = \tilde{\mathbf H}\mathbf x + \tilde{\mathbf v}y~=H~x+v~

实际程序中不显式计算 Lv−1\mathbf L_v^{-1}Lv−1,而是求解:

Lvy~=y\mathbf L_v\tilde{\mathbf y} = \mathbf yLvy~=y

LvH~=H\mathbf L_v\tilde{\mathbf H} = \mathbf HLvH~=H


10. 普通信息滤波的量测更新

先验状态和协方差为:

x^−,P−\hat{\mathbf x}^{-}, \qquad \mathbf P^{-}x^−,P−

先验信息定义为:

Λ−=(P−)−1\boxed{ \boldsymbol\Lambda^{-} = \left( \mathbf P^{-} \right)^{-1} }Λ−=(P−)−1

η−=Λ−x^−\boxed{ \boldsymbol\eta^{-} = \boldsymbol\Lambda^{-} \hat{\mathbf x}^{-} }η−=Λ−x^−

先验与量测的联合目标函数为:

J(x)=(x−x^−)TΛ−(x−x^−)+(y−Hx)TRv−1(y−Hx)\begin{aligned} J(\mathbf x) &= \left( \mathbf x-\hat{\mathbf x}^{-} \right)^{\mathrm T} \boldsymbol\Lambda^{-} \left( \mathbf x-\hat{\mathbf x}^{-} \right)\\ &\quad+ \left( \mathbf y-\mathbf H\mathbf x \right)^{\mathrm T} \mathbf R_v^{-1} \left( \mathbf y-\mathbf H\mathbf x \right) \end{aligned}J(x)=(x−x^−)TΛ−(x−x^−)+(y−Hx)TRv−1(y−Hx)

对 x\mathbf xx 求导并令其为零,得到:

Λ+=Λ−+HTRv−1H\boxed{ \boldsymbol\Lambda^{+} = \boldsymbol\Lambda^{-} + \mathbf H^{\mathrm T} \mathbf R_v^{-1} \mathbf H }Λ+=Λ−+HTRv−1H

η+=η−+HTRv−1y\boxed{ \boldsymbol\eta^{+} = \boldsymbol\eta^{-} + \mathbf H^{\mathrm T} \mathbf R_v^{-1} \mathbf y }η+=η−+HTRv−1y

这里要求:

  • 当前量测噪声与先验估计误差不相关;
  • 分批加入的观测条件独立,或已经使用完整协方差联合白化。

否则不能简单重复相加信息。


11. SRIF 的增广信息方程

先验平方根信息方程为:

Rx−x≈zx−\mathbf R_x^{-}\mathbf x \approx \mathbf z_x^{-}Rx−x≈zx−

白化观测方程为:

H~x≈y~\tilde{\mathbf H}\mathbf x \approx \tilde{\mathbf y}H~x≈y~

将二者纵向堆叠:

Rx−H\~\]x≈\[zx−y\~\]\\boxed{ \\begin{bmatrix} \\mathbf R_x\^{-}\\\\ \\tilde{\\mathbf H} \\end{bmatrix} \\mathbf x \\approx \\begin{bmatrix} \\mathbf z_x\^{-}\\\\ \\tilde{\\mathbf y} \\end{bmatrix} }\[Rx−H\~\]x≈\[zx−y\~

#mermaid-svg-5nGJ0bkSNmgVUAb0{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .error-icon{fill:#552222;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .marker.cross{stroke:#333333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5nGJ0bkSNmgVUAb0 p{margin:0;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .cluster-label text{fill:#333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .cluster-label span{color:#333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .cluster-label span p{background-color:transparent;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .label text,#mermaid-svg-5nGJ0bkSNmgVUAb0 span{fill:#333;color:#333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .node rect,#mermaid-svg-5nGJ0bkSNmgVUAb0 .node circle,#mermaid-svg-5nGJ0bkSNmgVUAb0 .node ellipse,#mermaid-svg-5nGJ0bkSNmgVUAb0 .node polygon,#mermaid-svg-5nGJ0bkSNmgVUAb0 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .rough-node .label text,#mermaid-svg-5nGJ0bkSNmgVUAb0 .node .label text,#mermaid-svg-5nGJ0bkSNmgVUAb0 .image-shape .label,#mermaid-svg-5nGJ0bkSNmgVUAb0 .icon-shape .label{text-anchor:middle;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .rough-node .label,#mermaid-svg-5nGJ0bkSNmgVUAb0 .node .label,#mermaid-svg-5nGJ0bkSNmgVUAb0 .image-shape .label,#mermaid-svg-5nGJ0bkSNmgVUAb0 .icon-shape .label{text-align:center;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .node.clickable{cursor:pointer;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .arrowheadPath{fill:#333333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5nGJ0bkSNmgVUAb0 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-5nGJ0bkSNmgVUAb0 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .cluster text{fill:#333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .cluster span{color:#333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 rect.text{fill:none;stroke-width:0;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .icon-shape,#mermaid-svg-5nGJ0bkSNmgVUAb0 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .icon-shape p,#mermaid-svg-5nGJ0bkSNmgVUAb0 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .icon-shape .label rect,#mermaid-svg-5nGJ0bkSNmgVUAb0 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5nGJ0bkSNmgVUAb0 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-5nGJ0bkSNmgVUAb0 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 先验信息方程
纵向堆叠
白化观测方程
QR正交三角化
后验信息因子
上三角回代


12. QR 量测更新推导

定义:

Am=Rx−H\~\mathbf A_m = \begin{bmatrix} \mathbf R_x^{-}\\ \tilde{\mathbf H} \end{bmatrix}Am=Rx−H\~

bm=zx−y\~\mathbf b_m = \begin{bmatrix} \mathbf z_x^{-}\\ \tilde{\mathbf y} \end{bmatrix}bm=zx−y\~

若状态维数为 nnn、观测维数为 mmm,则:

Am∈R(n+m)×n\mathbf A_m \in \mathbb R^{(n+m)\times n}Am∈R(n+m)×n

构造正交矩阵 Qm\mathbf Q_mQm,使:

QmTAm=Rx+0\boxed{ \mathbf Q_m^{\mathrm T}\mathbf A_m = \begin{bmatrix} \mathbf R_x^{+}\\ \mathbf0 \end{bmatrix} }QmTAm=Rx+0

右端同步变换:

QmTbm=zx+e\boxed{ \mathbf Q_m^{\mathrm T}\mathbf b_m = \begin{bmatrix} \mathbf z_x^{+}\\ \mathbf e \end{bmatrix} }QmTbm=zx+e

于是:

∥Amx−bm∥22=∥Rx+x−zx+∥22+∥e∥22\left\| \mathbf A_m\mathbf x-\mathbf b_m \right\|_2^2 = \left\| \mathbf R_x^{+}\mathbf x-\mathbf z_x^{+} \right\|_2^2 + \|\mathbf e\|_2^2∥Amx−bm∥22= Rx+x−zx+ 22+∥e∥22

后验状态由:

Rx+x^+=zx+\boxed{ \mathbf R_x^{+} \hat{\mathbf x}^{+} = \mathbf z_x^{+} }Rx+x^+=zx+

求得。


13. 为什么 QR 更新等价于信息更新

正交变换保持内积,因此:

AmTAm=Rx+TRx+\mathbf A_m^{\mathrm T}\mathbf A_m = \mathbf R_x^{+\mathrm T}\mathbf R_x^{+}AmTAm=Rx+TRx+

展开左侧:

AmTAm=Rx−TRx−+H~TH~=Λ−+HTRv−1H=Λ+\begin{aligned} \mathbf A_m^{\mathrm T}\mathbf A_m &= \mathbf R_x^{-\mathrm T}\mathbf R_x^{-} + \tilde{\mathbf H}^{\mathrm T}\tilde{\mathbf H}\\ &= \boldsymbol\Lambda^{-} + \mathbf H^{\mathrm T}\mathbf R_v^{-1}\mathbf H\\ &= \boldsymbol\Lambda^{+} \end{aligned}AmTAm=Rx−TRx−+H~TH~=Λ−+HTRv−1H=Λ+

所以:

Λ+=Rx+TRx+\boxed{ \boldsymbol\Lambda^{+} = \mathbf R_x^{+\mathrm T}\mathbf R_x^{+} }Λ+=Rx+TRx+

同理:

AmTbm=Rx+Tzx+\mathbf A_m^{\mathrm T}\mathbf b_m = \mathbf R_x^{+\mathrm T}\mathbf z_x^{+}AmTbm=Rx+Tzx+

因此:

η+=Rx+Tzx+\boxed{ \boldsymbol\eta^{+} = \mathbf R_x^{+\mathrm T}\mathbf z_x^{+} }η+=Rx+Tzx+

这说明 SRIF 与普通信息滤波在精确算术下等价。


14. 正交残差与新息统计

标准 Kalman 新息为:

ν=y−Hx^−\boldsymbol\nu = \mathbf y-\mathbf H\hat{\mathbf x}^{-}ν=y−Hx^−

新息协方差为:

Sν=HP−HT+Rv\mathbf S_\nu = \mathbf H\mathbf P^{-}\mathbf H^{\mathrm T} + \mathbf R_vSν=HP−HT+Rv

在先验和量测模型一致、矩阵满秩时,增广最小二乘的最小代价满足:

∥e∥22=νTSν−1ν\boxed{ \|\mathbf e\|2^2 = \boldsymbol\nu^{\mathrm T} \mathbf S\nu^{-1} \boldsymbol\nu }∥e∥22=νTSν−1ν

右侧就是归一化新息平方 NIS。

若噪声服从正确的高斯模型,且观测维数为 mmm,则:

NIS∼χm2\mathrm{NIS} \sim \chi_m^2NIS∼χm2

因此,e\mathbf ee 可以辅助用于:

  • 新息一致性检验;
  • 粗差检测;
  • 方差因子评估;
  • 模型比较。

但仍需注意:

  • 自由度应按有效秩确定;
  • 相关观测必须正确白化;
  • 残差小不代表估计无偏;
  • 完整似然还包含协方差行列式等归一化项。


第二部分:SRIF 时间更新

15. 状态模型

状态方程为:

xk=Fk−1xk−1+Bk−1uk−1+wk−1\mathbf x_k = \mathbf F_{k-1}\mathbf x_{k-1} + \mathbf B_{k-1}\mathbf u_{k-1} + \mathbf w_{k-1}xk=Fk−1xk−1+Bk−1uk−1+wk−1

其中:

  • xk−1\mathbf x_{k-1}xk−1:上一历元状态;
  • xk\mathbf x_kxk:当前历元状态;
  • Fk−1\mathbf F_{k-1}Fk−1:状态转移矩阵;
  • Bk−1uk−1\mathbf B_{k-1}\mathbf u_{k-1}Bk−1uk−1:已知控制项;
  • wk−1\mathbf w_{k-1}wk−1:过程噪声。

设:

Cov⁡(wk−1)=Qk−1\operatorname{Cov} \left( \mathbf w_{k-1} \right) = \mathbf Q_{k-1}Cov(wk−1)=Qk−1

协方差形式的预测为:

Pk−=Fk−1Pk−1+Fk−1T+Qk−1\mathbf P_k^{-} = \mathbf F_{k-1} \mathbf P_{k-1}^{+} \mathbf F_{k-1}^{\mathrm T} + \mathbf Q_{k-1}Pk−=Fk−1Pk−1+Fk−1T+Qk−1

过程噪声增加不确定度,也就是减少信息。

因此,时间更新不能像量测更新一样简单地进行信息加法。


16. 全秩过程噪声下的增广模型

若:

Qk−1=LQLQT\mathbf Q_{k-1} = \mathbf L_Q\mathbf L_Q^{\mathrm T}Qk−1=LQLQT

且 Qk−1\mathbf Q_{k-1}Qk−1 正定,定义:

WQ=LQ−1\mathbf W_Q = \mathbf L_Q^{-1}WQ=LQ−1

白化过程方程:

−WQFk−1xk−1+WQxk≈WQBk−1uk−1-\mathbf W_Q\mathbf F_{k-1}\mathbf x_{k-1} + \mathbf W_Q\mathbf x_k \approx \mathbf W_Q\mathbf B_{k-1}\mathbf u_{k-1}−WQFk−1xk−1+WQxk≈WQBk−1uk−1

上一历元后验信息方程为:

Rx,k−1+xk−1≈zx,k−1+\mathbf R_{x,k-1}^{+} \mathbf x_{k-1} \approx \mathbf z_{x,k-1}^{+}Rx,k−1+xk−1≈zx,k−1+

将两式堆叠:

Rx,k−1+0−WQFk−1WQ\]\[xk−1xk\]≈\[zx,k−1+WQBk−1uk−1\]\\boxed{ \\begin{bmatrix} \\mathbf R_{x,k-1}\^{+} \& \\mathbf0\\\\ -\\mathbf W_Q\\mathbf F_{k-1} \& \\mathbf W_Q \\end{bmatrix} \\begin{bmatrix} \\mathbf x_{k-1}\\\\ \\mathbf x_k \\end{bmatrix} \\approx \\begin{bmatrix} \\mathbf z_{x,k-1}\^{+}\\\\ \\mathbf W_Q\\mathbf B_{k-1}\\mathbf u_{k-1} \\end{bmatrix} }\[Rx,k−1+−WQFk−10WQ\]\[xk−1xk\]≈\[zx,k−1+WQBk−1uk−1

这是关于旧状态与当前状态的联合白化最小二乘问题。


17. 正交消元得到当前先验

对联合系统进行正交三角化,并将旧状态变量排在前面:

QtTRx,k−1+0−WQFk−1WQ=R11R120Rx,k−\mathbf Q_t^{\mathrm T} \begin{bmatrix} \mathbf R_{x,k-1}^{+} & \mathbf0\\ -\mathbf W_Q\mathbf F_{k-1} & \mathbf W_Q \end{bmatrix} = \begin{bmatrix} \mathbf R_{11} & \mathbf R_{12}\\ \mathbf0 & \mathbf R_{x,k}^{-} \end{bmatrix}QtTRx,k−1+−WQFk−10WQ=R110R12Rx,k−

右端同步变换:

QtTzx,k−1+WQBk−1uk−1=z1zx,k−\mathbf Q_t^{\mathrm T} \begin{bmatrix} \mathbf z_{x,k-1}^{+}\\ \mathbf W_Q\mathbf B_{k-1}\mathbf u_{k-1} \end{bmatrix} = \begin{bmatrix} \mathbf z_1\\ \mathbf z_{x,k}^{-} \end{bmatrix}QtTzx,k−1+WQBk−1uk−1=z1zx,k−

对应目标函数为:

J=∥R11xk−1+R12xk−z1∥22+∥Rx,k−xk−zx,k−∥22\begin{aligned} J &= \left\| \mathbf R_{11}\mathbf x_{k-1} + \mathbf R_{12}\mathbf x_k - \mathbf z_1 \right\|2^2\\ &\quad+ \left\| \mathbf R{x,k}^{-}\mathbf x_k - \mathbf z_{x,k}^{-} \right\|_2^2 \end{aligned}J=∥R11xk−1+R12xk−z1∥22+ Rx,k−xk−zx,k− 22

在本文"前后状态维数相同、过程噪声全秩"的简化模型下,若方阵 R11\mathbf R_{11}R11 非奇异,则对任意给定的 xk\mathbf x_kxk,都可选择:

xk−1=R11−1(z1−R12xk)\mathbf x_{k-1} = \mathbf R_{11}^{-1} \left( \mathbf z_1-\mathbf R_{12}\mathbf x_k \right)xk−1=R11−1(z1−R12xk)

使第一项为零。

因此,边缘化旧状态后保留:

Rx,k−xk≈zx,k−\boxed{ \mathbf R_{x,k}^{-}\mathbf x_k \approx \mathbf z_{x,k}^{-} }Rx,k−xk≈zx,k−

其信息矩阵等价于联合信息矩阵对旧状态块的 Schur 补。

若 R11\mathbf R_{11}R11 秩亏,必须使用秩揭示 QR、SVD、基准约束或重新参数化,不能直接丢弃上方方程。


18. 奇异过程噪声怎样处理

前述白化使用:

WQ=LQ−1\mathbf W_Q=\mathbf L_Q^{-1}WQ=LQ−1

要求 Qk−1\mathbf Q_{k-1}Qk−1 正定。

GNSS 中常出现零过程噪声,例如:

  • 常值模糊度;
  • 固定坐标;
  • 确定性动力学状态;
  • 严格约束参数。

此时常用方法包括:

  • 把确定性转移写成精确等式约束;
  • 只对白噪声子空间进行白化;
  • 使用矩形过程噪声因子;
  • 显式引入低维驱动噪声;
  • 使用秩揭示 QR 或 SVD;
  • 重新参数化状态。

不能仅为使 Q\mathbf QQ 可逆而随意增加过程噪声,否则会改变物理随机模型。


19. SRIF 完整流程

#mermaid-svg-MaS0iJnwrMRfWAt0{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-MaS0iJnwrMRfWAt0 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-MaS0iJnwrMRfWAt0 .error-icon{fill:#552222;}#mermaid-svg-MaS0iJnwrMRfWAt0 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-MaS0iJnwrMRfWAt0 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-MaS0iJnwrMRfWAt0 .marker.cross{stroke:#333333;}#mermaid-svg-MaS0iJnwrMRfWAt0 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-MaS0iJnwrMRfWAt0 p{margin:0;}#mermaid-svg-MaS0iJnwrMRfWAt0 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-MaS0iJnwrMRfWAt0 .cluster-label text{fill:#333;}#mermaid-svg-MaS0iJnwrMRfWAt0 .cluster-label span{color:#333;}#mermaid-svg-MaS0iJnwrMRfWAt0 .cluster-label span p{background-color:transparent;}#mermaid-svg-MaS0iJnwrMRfWAt0 .label text,#mermaid-svg-MaS0iJnwrMRfWAt0 span{fill:#333;color:#333;}#mermaid-svg-MaS0iJnwrMRfWAt0 .node rect,#mermaid-svg-MaS0iJnwrMRfWAt0 .node circle,#mermaid-svg-MaS0iJnwrMRfWAt0 .node ellipse,#mermaid-svg-MaS0iJnwrMRfWAt0 .node polygon,#mermaid-svg-MaS0iJnwrMRfWAt0 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-MaS0iJnwrMRfWAt0 .rough-node .label text,#mermaid-svg-MaS0iJnwrMRfWAt0 .node .label text,#mermaid-svg-MaS0iJnwrMRfWAt0 .image-shape .label,#mermaid-svg-MaS0iJnwrMRfWAt0 .icon-shape .label{text-anchor:middle;}#mermaid-svg-MaS0iJnwrMRfWAt0 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-MaS0iJnwrMRfWAt0 .rough-node .label,#mermaid-svg-MaS0iJnwrMRfWAt0 .node .label,#mermaid-svg-MaS0iJnwrMRfWAt0 .image-shape .label,#mermaid-svg-MaS0iJnwrMRfWAt0 .icon-shape .label{text-align:center;}#mermaid-svg-MaS0iJnwrMRfWAt0 .node.clickable{cursor:pointer;}#mermaid-svg-MaS0iJnwrMRfWAt0 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-MaS0iJnwrMRfWAt0 .arrowheadPath{fill:#333333;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-MaS0iJnwrMRfWAt0 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-MaS0iJnwrMRfWAt0 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-MaS0iJnwrMRfWAt0 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-MaS0iJnwrMRfWAt0 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-MaS0iJnwrMRfWAt0 .cluster text{fill:#333;}#mermaid-svg-MaS0iJnwrMRfWAt0 .cluster span{color:#333;}#mermaid-svg-MaS0iJnwrMRfWAt0 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-MaS0iJnwrMRfWAt0 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-MaS0iJnwrMRfWAt0 rect.text{fill:none;stroke-width:0;}#mermaid-svg-MaS0iJnwrMRfWAt0 .icon-shape,#mermaid-svg-MaS0iJnwrMRfWAt0 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-MaS0iJnwrMRfWAt0 .icon-shape p,#mermaid-svg-MaS0iJnwrMRfWAt0 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-MaS0iJnwrMRfWAt0 .icon-shape .label rect,#mermaid-svg-MaS0iJnwrMRfWAt0 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-MaS0iJnwrMRfWAt0 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-MaS0iJnwrMRfWAt0 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-MaS0iJnwrMRfWAt0 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 上一历元

R加 z加
加入过程模型
正交消元旧状态
当前先验

R减 z减
加入白化观测
QR三角化
当前后验

R加 z加
三角回代求状态



第三部分:与其他滤波方法的区别

20. SRIF 与协方差型 SRKF

协方差型平方根 Kalman 滤波保存:

P=SST\mathbf P = \mathbf S\mathbf S^{\mathrm T}P=SST

SRIF 保存:

P−1=RxTRx\mathbf P^{-1} = \mathbf R_x^{\mathrm T}\mathbf R_xP−1=RxTRx

对比项 协方差型 SRKF SRIF
保存对象 协方差因子 S\mathbf SS 信息因子 Rx\mathbf R_xRx
直接表示 不确定度 约束信息
量测更新 Kalman 阵列更新 追加白化观测行
时间更新 通常较直接 需要增广与边缘化
获取完整协方差 直接计算 需要三角求解
参数消元 相对不自然 QR 消元自然
稀疏性 协方差常较稠密 信息因子可能保持稀疏
典型倾向 小中型导航递推 大量观测和局部参数消元

若需要由 SRIF 恢复完整协方差,可先求:

RxX=I\mathbf R_x\mathbf X = \mathbf IRxX=I

得到:

X=Rx−1\mathbf X=\mathbf R_x^{-1}X=Rx−1

再计算:

P=XXT\boxed{ \mathbf P = \mathbf X\mathbf X^{\mathrm T} }P=XXT

获取完整协方差可能破坏 SRIF 的计算优势。


21. SRIF 与标准 Kalman

在线性模型、二阶统计条件和标准不相关假设下:

  • 标准 Kalman;
  • 普通信息滤波;
  • 协方差型 SRKF;
  • SRIF;

在精确算术下具有相同的状态均值与后验协方差。

在联合高斯条件下,它们同时给出条件均值 MMSE 估计。

SRIF 的优势来自:

  • 数值因子化;
  • 正交变换;
  • 稀疏组织;
  • 参数消元方式。

它不是统计意义上比 Kalman 更高阶的估计器。


22. SRIF 优化的是什么

SRIF 主要优化:

22.1 法方程的数值风险

避免显式形成:

ATWA\mathbf A^{\mathrm T}\mathbf W\mathbf AATWA

22.2 大量观测的信息累积

独立或已联合白化的观测可以作为新行加入信息方程。

22.3 局部参数消元

适合消去:

  • 接收机钟差;
  • 局部模糊度;
  • 临时状态;
  • 旧历元状态;
  • 不关心的辅助参数。

22.4 稀疏和分块结构

在合理的参数排序下,可利用大型系统的稀疏性。

22.5 有限精度可靠性

使用 QR、Householder、Givens 和三角回代减少普通矩阵求逆与法方程带来的误差。


23. SRIF 的优势与局限

23.1 优势

  • 数值稳定性通常优于法方程;
  • 观测可以逐条或分批加入;
  • 便于正交消元局部参数;
  • 适合稀疏和分块计算;
  • 正交残差便于一致性检验;
  • 可扩展到批处理和平滑估计。

23.2 局限

  • 时间更新比量测更新复杂;
  • 获取完整协方差代价较高;
  • 奇异过程噪声需要专门处理;
  • 边缘化会产生填充;
  • 效率依赖参数排序;
  • 相关观测必须正确建模;
  • 不天然抗粗差、多路径和周跳;
  • 非线性问题仍需迭代线性化;
  • 精确约束和秩亏问题需要专门算法。


第四部分:GNSS 参数估计应用

24. 与测量平差的关系

线性化观测模型为:

l=Aδ+ε\mathbf l = \mathbf A\boldsymbol\delta+\boldsymbol\varepsilonl=Aδ+ε

其中:

  • l\mathbf ll:观测减计算值;
  • A\mathbf AA:设计矩阵;
  • δ\boldsymbol\deltaδ:参数改正数;
  • ε\boldsymbol\varepsilonε:观测误差。

设:

Cov⁡(ε)=Rl\operatorname{Cov} \left( \boldsymbol\varepsilon \right) = \mathbf R_lCov(ε)=Rl

若:

Rl=LlLlT\mathbf R_l = \mathbf L_l\mathbf L_l^{\mathrm T}Rl=LlLlT

则白化观测为:

A~=Ll−1A\tilde{\mathbf A} = \mathbf L_l^{-1}\mathbf AA~=Ll−1A

l~=Ll−1l\tilde{\mathbf l} = \mathbf L_l^{-1}\mathbf ll~=Ll−1l

传统加权最小二乘形成:

ATRl−1Aδ=ATRl−1l\mathbf A^{\mathrm T} \mathbf R_l^{-1} \mathbf A \boldsymbol\delta = \mathbf A^{\mathrm T} \mathbf R_l^{-1} \mathbf lATRl−1Aδ=ATRl−1l

SRIF 则直接对先验信息行和白化观测行进行 QR 三角化。

因此:

SRIF 可以看作"具有动态先验与时间传播的平方根加权最小二乘"。


25. 在 GNSS 中是否适用

SRIF 特别适合:

  • 观测数量大;
  • 状态维数高;
  • 参数具有全局与局部层级;
  • 需要实时递推;
  • 需要频繁参数消元;
  • 需要利用稀疏结构;
  • 数值条件较差。

可估参数包括:

  • 接收机坐标和钟差;
  • 对流层和电离层参数;
  • 载波相位模糊度相关状态;
  • 卫星钟差;
  • 卫星轨道参数;
  • 地球定向参数;
  • GNSS/INS 误差状态。

对于非线性 GNSS 观测,需要在当前近似状态处线性化:

lk≈Hkδk+vk\mathbf l_k \approx \mathbf H_k\boldsymbol\delta_k + \mathbf v_klk≈Hkδk+vk

求得改正数后更新:

x^k←x^k,0+δk\hat{\mathbf x}k \leftarrow \hat{\mathbf x}{k,0} + \boldsymbol\delta_kx^k←x^k,0+δk


26. 单站 PPP 与 PPP-AR

简化的双频非组合 PPP 状态可写为:

x=rTc δtrTzwdITbϕTT\mathbf x = \begin{bmatrix} \mathbf r^{\mathrm T} & c\,\delta t_r & T_{\mathrm{zwd}} & \mathbf I^{\mathrm T} & \mathbf b_{\phi}^{\mathrm T} \end{bmatrix}^{\mathrm T}x=rTcδtrTzwdITbϕTT

其中:

  • r\mathbf rr:接收机坐标;
  • c δtrc\,\delta t_rcδtr:距离单位的接收机钟差;
  • TzwdT_{\mathrm{zwd}}Tzwd:天顶湿延迟;
  • I\mathbf II:电离层状态;
  • bϕ\mathbf b_{\phi}bϕ:模糊度相关浮点状态。

SRIF 可以:

  • 按卫星或观测类型加入观测;
  • 对相关观测统一白化;
  • 递推累积信息;
  • 用 QR 维护三角因子;
  • 在周跳和卫星升降时更新状态。

但对单站、小规模 PPP,SRIF 不一定比 SRKF 更简单。

PPP-AR 的整数搜索通常需要浮点模糊度协方差子块:

Qa^a^\mathbf Q_{\hat a\hat a}Qa^a^

在 SRIF 中,需要通过:

  • 三角求解;
  • 选定协方差求逆;
  • 变量重排序后提取子块;

获得该协方差。

因此,若程序频繁进行模糊度固定和协方差访问,协方差型 SRKF 可能更加直接。


27. 实时钟差、精密定轨与网络解算

27.1 实时卫星钟差

高维状态可能包括:

  • 卫星钟差;
  • 接收机钟差;
  • 对流层;
  • 模糊度;
  • 测站坐标约束。

SRIF 可以按测站分批加入观测,并优先消去局部接收机参数。

27.2 精密定轨

可联合处理:

  • 轨道初始状态;
  • 动力学参数;
  • 经验加速度;
  • 卫星钟差;
  • 测站和大气参数。

非线性定轨仍需要在参考轨道附近反复线性化。

27.3 大型 GNSS 网络

参数可分为:

text 复制代码
全局参数
→ 轨道、卫星钟差、地球定向参数

局部参数
→ 接收机钟差、对流层、模糊度

SRIF 可通过参数排序和 QR 消元先处理局部参数,再保留全局参数。

变量排序不合理时,消元填充可能显著增加存储量和计算量。


28. 观测时间相关性

标准分批 SRIF 更新要求:

  • 不同观测批次在给定状态后相互独立;
  • 或已经使用完整协方差联合白化。

GNSS 中可能存在:

  • 多路径时间相关;
  • 平滑伪距相关;
  • 对流层模型残差相关;
  • 接收机噪声相关;
  • 预处理滤波引入的相关性。

忽略相关性可能造成:

  • 同一信息被重复计权;
  • 协方差过于乐观;
  • 精度评定失真;
  • 模糊度检验可靠性下降。

处理方法包括:

  • 构造时空协方差并联合白化;
  • 使用预白化模型;
  • 扩展有色噪声状态;
  • 使用考虑时间相关性的 SRIF 变体。

29. 状态增删、边缘化与精确约束

29.1 状态增加

新增卫星模糊度时,需要:

  • 扩展信息因子列;
  • 加入初始化先验;
  • 重新三角化。

29.2 状态删除与边缘化

一般不能直接删除 Rx\mathbf R_xRx 的任意行列。

常用方法:

  • 参数列置换;
  • Givens 旋转;
  • Householder 变换;
  • QR 降阶;
  • 等价 Schur 补消元。

29.3 模糊度精确固定

精确约束可写为:

Cx=d\mathbf C\mathbf x=\mathbf dCx=d

零方差约束对应无限信息方向,不能简单使用普通有限权值表示。

更严格的处理方法包括:

  • 用零空间参数化消去约束;
  • 使用等式约束 QR;
  • 直接消去已固定参数;
  • 使用约束型 SRIF;
  • 使用秩揭示分解。

使用很小但非零的约束方差只是近似方法,需要检查病态性和固定错误风险。


30. SRIF 是否有独有使用场景

严格来说,没有一种线性高斯估计问题只能使用 SRIF。

标准 Kalman、SRKF、批处理最小二乘和因子图也可能获得相同理论结果。

SRIF 最具代表性的优势场景是:

观测量很大、局部参数很多、结构稀疏,并且需要持续加入信息和正交消元参数。

特别适合:

  • 实时卫星钟差;
  • 精密定轨;
  • 大型 GNSS 网络;
  • 多测站联合估计;
  • 逐观测递推处理;
  • 大量临时参数消元。

它的独特工程价值是:

text 复制代码
把递推估计转化为稳定的白化最小二乘和QR消元过程

31. 方法选择流程

#mermaid-svg-qegaqaMOQz7qY79K{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-qegaqaMOQz7qY79K .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-qegaqaMOQz7qY79K .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-qegaqaMOQz7qY79K .error-icon{fill:#552222;}#mermaid-svg-qegaqaMOQz7qY79K .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-qegaqaMOQz7qY79K .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-qegaqaMOQz7qY79K .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-qegaqaMOQz7qY79K .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-qegaqaMOQz7qY79K .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-qegaqaMOQz7qY79K .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-qegaqaMOQz7qY79K .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-qegaqaMOQz7qY79K .marker{fill:#333333;stroke:#333333;}#mermaid-svg-qegaqaMOQz7qY79K .marker.cross{stroke:#333333;}#mermaid-svg-qegaqaMOQz7qY79K svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-qegaqaMOQz7qY79K p{margin:0;}#mermaid-svg-qegaqaMOQz7qY79K .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-qegaqaMOQz7qY79K .cluster-label text{fill:#333;}#mermaid-svg-qegaqaMOQz7qY79K .cluster-label span{color:#333;}#mermaid-svg-qegaqaMOQz7qY79K .cluster-label span p{background-color:transparent;}#mermaid-svg-qegaqaMOQz7qY79K .label text,#mermaid-svg-qegaqaMOQz7qY79K span{fill:#333;color:#333;}#mermaid-svg-qegaqaMOQz7qY79K .node rect,#mermaid-svg-qegaqaMOQz7qY79K .node circle,#mermaid-svg-qegaqaMOQz7qY79K .node ellipse,#mermaid-svg-qegaqaMOQz7qY79K .node polygon,#mermaid-svg-qegaqaMOQz7qY79K .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-qegaqaMOQz7qY79K .rough-node .label text,#mermaid-svg-qegaqaMOQz7qY79K .node .label text,#mermaid-svg-qegaqaMOQz7qY79K .image-shape .label,#mermaid-svg-qegaqaMOQz7qY79K .icon-shape .label{text-anchor:middle;}#mermaid-svg-qegaqaMOQz7qY79K .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-qegaqaMOQz7qY79K .rough-node .label,#mermaid-svg-qegaqaMOQz7qY79K .node .label,#mermaid-svg-qegaqaMOQz7qY79K .image-shape .label,#mermaid-svg-qegaqaMOQz7qY79K .icon-shape .label{text-align:center;}#mermaid-svg-qegaqaMOQz7qY79K .node.clickable{cursor:pointer;}#mermaid-svg-qegaqaMOQz7qY79K .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-qegaqaMOQz7qY79K .arrowheadPath{fill:#333333;}#mermaid-svg-qegaqaMOQz7qY79K .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-qegaqaMOQz7qY79K .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-qegaqaMOQz7qY79K .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-qegaqaMOQz7qY79K .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-qegaqaMOQz7qY79K .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-qegaqaMOQz7qY79K .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-qegaqaMOQz7qY79K .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-qegaqaMOQz7qY79K .cluster text{fill:#333;}#mermaid-svg-qegaqaMOQz7qY79K .cluster span{color:#333;}#mermaid-svg-qegaqaMOQz7qY79K div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-qegaqaMOQz7qY79K .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-qegaqaMOQz7qY79K rect.text{fill:none;stroke-width:0;}#mermaid-svg-qegaqaMOQz7qY79K .icon-shape,#mermaid-svg-qegaqaMOQz7qY79K .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-qegaqaMOQz7qY79K .icon-shape p,#mermaid-svg-qegaqaMOQz7qY79K .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-qegaqaMOQz7qY79K .icon-shape .label rect,#mermaid-svg-qegaqaMOQz7qY79K .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-qegaqaMOQz7qY79K .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-qegaqaMOQz7qY79K .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-qegaqaMOQz7qY79K :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 单站 小中规模

频繁需要协方差
大量观测

局部参数多
超大稀疏非线性




GNSS参数估计
规模和结构
标准Kalman或SRKF
SRIF
稀疏QR 因子图

批处理优化
过程噪声是否奇异
常规SRIF时间更新
约束型或秩揭示更新
观测是否相关
分批白化并更新
联合白化

有色噪声模型


32. 二维量测更新例子

设先验均值:

x^−=26\hat{\mathbf x}^{-} = \begin{bmatrix} 2\\ 6 \end{bmatrix}x^−=26

先验协方差:

P−=1004\mathbf P^{-} = \begin{bmatrix} 1 & 0\\ 0 & 4 \end{bmatrix}P−=1004

因此:

Λ−=10014\boldsymbol\Lambda^{-} = \begin{bmatrix} 1 & 0\\ 0 & \frac14 \end{bmatrix}Λ−=10041

可取:

Rx−=10012\mathbf R_x^{-} = \begin{bmatrix} 1 & 0\\ 0 & \frac12 \end{bmatrix}Rx−=10021

平方根信息向量:

zx−=Rx−x^−=23\mathbf z_x^{-} = \mathbf R_x^{-}\hat{\mathbf x}^{-} = \begin{bmatrix} 2\\ 3 \end{bmatrix}zx−=Rx−x^−=23

新增观测:

y=3y=3y=3

观测模型:

H=10\mathbf H = \begin{bmatrix} 1 & 0 \end{bmatrix}H=10

观测方差:

Rv=1R_v=1Rv=1

信息更新为:

Λ+=Λ−+HTRv−1H=20014\boldsymbol\Lambda^{+} = \boldsymbol\Lambda^{-} + \mathbf H^{\mathrm T}R_v^{-1}\mathbf H = \begin{bmatrix} 2 & 0\\ 0 & \frac14 \end{bmatrix}Λ+=Λ−+HTRv−1H=20041

信息向量更新为:

η+=η−+HTRv−1y=532\boldsymbol\eta^{+} = \boldsymbol\eta^{-} + \mathbf H^{\mathrm T}R_v^{-1}y = \begin{bmatrix} 5\\ \frac32 \end{bmatrix}η+=η−+HTRv−1y=523

可取后验平方根信息因子:

Rx+=20012\mathbf R_x^{+} = \begin{bmatrix} \sqrt2 & 0\\ 0 & \frac12 \end{bmatrix}Rx+=2 0021

后验平方根信息向量满足:

Rx+Tzx+=η+\mathbf R_x^{+\mathrm T} \mathbf z_x^{+} = \boldsymbol\eta^{+}Rx+Tzx+=η+

通过下三角回代得到:

zx+=(Rx+T)−1η+=523\mathbf z_x^{+} = \left( \mathbf R_x^{+\mathrm T} \right)^{-1} \boldsymbol\eta^{+} = \begin{bmatrix} \frac{5}{\sqrt2}\\ 3 \end{bmatrix}zx+=(Rx+T)−1η+=2 53

解:

Rx+x^+=zx+\mathbf R_x^{+}\hat{\mathbf x}^{+} = \mathbf z_x^{+}Rx+x^+=zx+

得到:

x^+=2.56\boxed{ \hat{\mathbf x}^{+} = \begin{bmatrix} 2.5\\ 6 \end{bmatrix} }x^+=2.56

观测只约束了第一个状态,因此第二个状态保持不变。


33. 常见概念混淆

33.1 "信息"是信息论中的比特数

错误。这里的信息矩阵是协方差的逆,也称精度矩阵。

33.2 平方根信息因子是逐元素开平方

错误。它满足:

Λ=RxTRx\boldsymbol\Lambda = \mathbf R_x^{\mathrm T}\mathbf R_xΛ=RxTRx

33.3 平方根信息向量是对信息向量开平方

错误。它定义为:

zx=Rxx^\mathbf z_x = \mathbf R_x\hat{\mathbf x}zx=Rxx^

33.4 SRIF 必须显式计算 P−1\mathbf P^{-1}P−1

错误。实际算法可以直接维护三角信息方程。

33.5 SRIF 就是协方差型 SRKF

不准确。二者都是平方根实现,但维护的因子不同。

33.6 观测信息总能逐批直接相加

错误。只有条件独立或已联合白化的观测才能分别相加。

33.7 SRIF 一定比 SRKF 更快

错误。性能取决于规模、稀疏性、参数排序和时间更新频率。

33.8 SRIF 天然抗粗差、多路径和周跳

错误。仍需质量控制、鲁棒估计和状态管理。

33.9 信息形式天然保持稀疏

错误。边缘化和参数排序会产生填充。

33.10 直接删除信息因子的行列就是边缘化

错误。边缘化需要正确的置换和正交消元。


34. 工程实现检查清单

34.1 数学约定

  • Λ=P−1\boldsymbol\Lambda=\mathbf P^{-1}Λ=P−1 的适用条件是否满足;
  • 是否统一采用 Λ=RxTRx\boldsymbol\Lambda=\mathbf R_x^{\mathrm T}\mathbf R_xΛ=RxTRx;
  • Rx\mathbf R_xRx 是否统一为上三角;
  • zx=Rxx^\mathbf z_x=\mathbf R_x\hat{\mathbf x}zx=Rxx^ 是否一致;
  • 先验上标和逆矩阵括号是否正确。

34.2 量测更新

  • 观测是否正确白化;
  • 跨历元相关性是否被建模;
  • 是否避免显式形成法方程;
  • 是否使用稳定的 QR/Householder/Givens;
  • 残差统计的自由度是否正确。

34.3 时间更新

  • Q\mathbf QQ 是否正定;
  • 奇异过程噪声是否采用约束或矩形因子;
  • 被消元状态块是否满秩;
  • 旧状态是否正确边缘化;
  • 控制输入是否进入正确右端项。

34.4 GNSS 状态管理

  • 新升卫星是否正确扩展状态;
  • 周跳后是否正确重置模糊度;
  • 落下卫星是否通过置换和消元删除;
  • 模糊度固定是否使用约束型处理;
  • PPP-AR 所需协方差子块是否正确提取;
  • 参数排序是否减少 QR 填充;
  • 是否检查基准缺失、秩亏和不可观状态。

35. 总结

SRIF 保存信息矩阵的平方根因子

Λ=RxTRx\boldsymbol\Lambda=\mathbf R_x^{\mathrm T}\mathbf R_xΛ=RxTRx,以及平方根信息向量

zx=Rxx^\mathbf z_x=\mathbf R_x\hat{\mathbf x}zx=Rxx^。
"信息"表示协方差的逆;"平方根"表示通过三角因子的转置乘积恢复信息矩阵。
SRIF 的量测更新是把先验信息方程与白化观测方程堆叠,再通过 QR 得到新的三角信息方程。
SRIF 的时间更新需要建立前后历元联合模型,并通过正交消元边缘化旧状态。
SRIF 与标准 Kalman 和协方差型 SRKF 在模型一致、精确算术条件下具有相同统计结果。
SRIF 特别适合大量观测、局部参数多、结构稀疏,并需要实时信息累积和参数消元的 GNSS 参数估计问题。


参考资料

  • G. J. Bierman:Factorization Methods for Discrete Sequential Estimation
  • C. L. Thornton:Triangular Covariance Factorizations for Kalman Filtering
  • J. R. Carpenter、C. N. D'Souza:Navigation Filter Best Practices
  • X. Zuo 等:A Square Root Information Filter for Multi-GNSS Real-Time Precise Clock Estimation
  • Y. Jiang 等:Square Root Information Filter Considering Temporal Correlation of GNSS Observations
相关推荐
想做小南娘,发现自己是女生喵11 小时前
第 2 章 顺序表和 vector
java·数据结构·算法
艾醒11 小时前
2026年第29周(7.13-7.19)AI全复盘:技术突破、行业趣闻翻车、算力服务器商业动态
人工智能·算法
雪碧聊技术12 小时前
动态规划算法—01背包问题
算法·动态规划
bu_shuo12 小时前
c与cpp中的argc和argv
c语言·c++·算法
普贤莲花12 小时前
【2026年第29周---写于20260718】---整理,断舍离
程序人生·算法·生活
Reart12 小时前
Leetcode 674.最长连续递增序列 (719)
后端·算法
Reart12 小时前
Leetcode 300.最长递增子序列(719)
算法
可编程芯片开发12 小时前
VSG虚拟同步发电机simulink建模与仿真
算法
en.en..12 小时前
冒泡排序与选择排序完整对比解析
开发语言·数据结构·算法·c#·排序算法