【DR_CAN卡尔曼滤波器笔记】一文讲懂卡尔曼滤波器(手把手推公式)(一)


首先要特别感谢B站的UP主DR_CAN,本文的公式推导都来自他的:【卡尔曼滤波器】_DR_CAN合集以及书籍:控制之美,侵删。感兴趣的同学可以移步B站。本文将结合视频和书籍,尽可能详尽的完成卡尔曼滤波器的公式推导。

0.如果你想知道卡尔曼滤波器处于控制理论的什么位置

这一部分会简单介绍一下自动控制理论的发展(摘自卢京潮:自动控制原理),其实只需要通过简单的时间节点就能够帮助大家理清自动化专业所学的那些课程之间的脉络体系,让大家对自动控制理论、现代控制理论、以及卡尔曼滤波器之间的关系有一个大概的认识。

经典控制理论:

  • 1788年,英国人瓦特(James Watt) 在他发明的蒸汽机上使用了离心调速器,解决了蒸汽机的速度控制问题。但是时候人们曾经试图改善调速器的准确性,却常常导致系统产生振荡。
  • 1868年,英国物理学家麦克斯韦通过对调速系统线性常微分方程的建立和分析,解决了瓦特控制系统中出现的不稳定问题,开辟了用数学方法研究控制系统的途径。(线性常微分方程
  • 1877年和1895年,英国数学家劳斯和德国数学家赫尔维兹分别独立的建立了直接根据代数方程的系数判别系统稳定性的准则,这些方法奠定了经典控制理论中时域分析方法的基础。(劳斯判据、赫尔维兹稳定判据
  • 1932年,美国物理学家奈奎斯特研究了研究了长距离电话线信号传输中出现失真的问题,运用复变函数理论建立了以频率特性为基础的稳定判据,奠定了频率响应法的基础。随后,伯德和尼科尔斯在20世纪30年代末和40年代初进一步将频率响应法加以发展,形成了经典控制理论的频域分析法。(奈奎斯特稳定判据、伯德图、尼科尔斯图
  • 1948年,美国科学家伊万斯创立了根轨迹方法。(根轨迹

以传递函数最为描述系统的数学模型,以时域分析法、根轨迹法和频域分析方法为主要分析工具,构成了经典控制理论的基本框架。到20世纪50年代,经典控制理论发展到相当成熟的地步,形成了相对完整的理论体系。
经典控制理论研究的对象基本上是以线性定常系统为主的单输入-单输出系统。

现代控制理论:

  • 20世纪50年代中期,空间技术的发展迫切要求解决更复杂的多变量系统、非线性系统的最优控制问题。同时,计算机技术的发展也从计算手段上为控制理论的发展提供了条件。适合于航天器的运动规律、又便于计算机求解的状态空间描述成为主要的模型形式。(状态空间描述
  • 1892年,俄国数学家李雅普诺夫创立稳定性理论。(李雅普诺夫稳定性判别法
  • 1956年,前苏联科学见庞特里亚金提出极大值原理。(极大值原理
  • 1956年,美国数学家贝尔曼创立了动态规划。(动态规划
  • 1959年,美国数学家卡尔曼提出了著名的卡尔曼滤波算法。(卡尔曼滤波器
  • 1960年贝尔曼提出系统的可控性和可观测性问题。(可控性和可观测性

到20世纪60年代初,一套以状态方程作为描述系统的数学模型,以最优控制和卡尔曼滤波为核心控制系统分析设计的新原理和方法基本确定,现代控制理论应运而生,它适用于多变量、非线性、时变系统。

智能控制理论:
为了解决现代控制理论在工业生产过程应用中所遇到的被控对象精确状态空间模型不易建立,合适的最优性能指标难以构造,所得最优控制器往往过于复杂等问题,近几十年中不断提出一些新的控制方法和理论,例如:自适应控制、预测控制、容错控制、鲁棒控制、非线性控制等等,大大地扩展了控制理论的研究范围。以控制论、信息论、仿生学为基础的只能控制理论,开拓了更广泛的研究领域,在信息与控制学科研究中注入了蓬勃的生命力。

温馨提示:由上面的控制理论发展介绍可以看出,阅读本文你需要理解现代控制理论的状态方程的概念。

1.什么是卡尔曼滤波器?

卡尔曼滤波器是一种最优化的递归的数字处理的算法。它兼具滤波器和观测器的特性。在某些应用中,卡尔曼滤波器主要用于对系统状态的估计和预测,因此被视为状态观测器;在其他应用种,卡尔曼滤波器主要用于对噪声信号的滤波和去噪,因此被视为信号滤波器

卡尔曼滤波器通过将多个传感器或测量器的数据进行融合,利用概率论和线性系统理论对状态进行估计和预测,它能够根据先验知识和测量信息来递归地更新状态估计,并提供对未来状态的最优预测。

如果你对上面一段话中的数据融合、先验知识,递归更新,最优预测等等存在疑问或者没有概念,没有关系,我们可以接着往下看。在你读完这篇文章之后,我希望你可以再次回来重新看这一段话,如果你看懂了卡尔曼滤波器,那么你就可以完全读懂这一段,明白它怎样递归,以及为什么是最优的。

1.1什么是递归算法和数据融合?

首先我们要来学习一下什么是数据融合。

如图1所示,一台无人机使用压力传感器来测量飞行的高度,我们用 Z k {Z_k} Zk表示测量结果,下标 k {k} k 代表第 k {k} k 次测量,我们假设一共进行了 k {k} k次测量,并将每次的测量结果记为: Z 1 {Z_1} Z1 Z 2 {Z_2} Z2 Z 3 {Z_3} Z3 Z k {Z_k} Zk
在这里插入图片描述

因为在实际测量中,由于测量过程中存在随机误差,所以每次测量的结果都会有所不同。那么我们怎么估计无人机飞行的真正高度呢?很顺理成章的一个想法就是,我们对这些测量值求平均值。即:
Z ^ k = 1 k ( z 1 + z 2 + ⋯ + z k ) (1) {\hat Z_k} = \frac{1}{k}({z_1} + {z_2} + \cdots + {z_k}) \tag{1} Z^k=k1(z1+z2++zk)(1)
其中, Z ^ k {\hat Z_k} Z^k就是经过次测量后的估计值 ∧ \wedge 代表估计,(也就是我们根据测量值求出来的平均值,并不是无人机飞行的真实值)。

这个求平均值的方法是我们在日常生活中最常用的方法,但是这个方法存在两个缺陷:
1.每一次运算都需要做 k {k} k次加法运算和1次乘法运算,随着 k {k} k的增加,加法的计算量会逐步增大。
2.每一次的测量结果都需要保留,也就是说如果进行 k {k} k次测量,那么就需要存储 k {k} k次结果,非常占用存储空间。

那么我们可以对公式(1)进行一点简单的运算,将 Z k {Z_k} Zk提出来,得到:
Z ^ k = 1 k ( z 1 + z 2 + ⋯ + z k ) = 1 k ( z 1 + z 2 + ⋯ + z k − 1 ) + 1 k z k = k − 1 k [ 1 k − 1 ( z 1 + z 2 + ⋯ + z k − 1 ) ] + 1 k z k (2) \begin{aligned} {{\hat Z}_k} &= \frac{1}{k}({z_1} + {z_2} + \cdots + {z_k})\\ &= \frac{1}{k}({z_1} + {z_2} + \cdots + {z_{k - 1}}) +\textcolor{#FF0000}{ \frac{1}{k}{z_k}}\\\\ &= \frac{{k - 1}}{k}[\textcolor{#FF0000}{\frac{1}{{k - 1}}({z_1} + {z_2} + \cdots + {z_{k - 1}})}] + \frac{1}{k}{z_k} \tag{2} \end{aligned} Z^k=k1(z1+z2++zk)=k1(z1+z2++zk1)+k1zk=kk1[k11(z1+z2++zk1)]+k1zk(2)
其中, 1 k − 1 ( z 1 + z 2 + ⋯ + z k − 1 ) = z ^ k − 1 \frac{1}{{k - 1}}({z_1} + {z_2} + \cdots + {z_{k - 1}}) = {\hat z_{k - 1}} k11(z1+z2++zk1)=z^k1 k − 1 {k-1} k1次测量后的平均值,带入公式(2)化简,可得:
z ^ k = k − 1 k z ^ k − 1 + 1 k z k = z ^ k − 1 − 1 k z ^ k − 1 + 1 k z k = z ^ k − 1 + 1 k ( z k − z ^ k − 1 ) (3) \begin{aligned} \textcolor{#FF0000}{{{\hat z}_k}} &= \frac{{k - 1}}{k}{{\hat z}_{k - 1}} + \frac{1}{k}{z_k}\\ & = {{\hat z}_{k - 1}} - \frac{1}{k}{{\hat z}_{k - 1}} + \frac{1}{k}{z_k}\\ & = {\textcolor{#FF0000}{ {\hat z}_{k - 1}}} + \frac{1}{k}({z_k} - \textcolor{#FF0000}{{{\hat z}_{k - 1}}}) \tag{3} \end{aligned} z^k=kk1z^k1+k1zk=z^k1k1z^k1+k1zk=z^k1+k1(zkz^k1)(3)
公式(3)就是公式(1)的另一种表达形式。

对比公式(1)和(3),我们可以发现,公式(3)只需要进行两次加法运算和一次乘法运算;并且,在每一次运算之后只需要保留上一次的估计值,即: z ^ k − 1 {\hat z_{k - 1}} z^k1和当前次数 k {k} k,这将大大减少硬件存储空间的使用。这种通过上一次估计值( z ^ k − 1 {\hat z_{k - 1}} z^k1)推断当前估计值( z ^ k {\hat z_{k}} z^k)的算法被称为递归算法。

观察公式(3),当测量值 k {k} k很大时, 1 k ≈ 0 \frac{1}{k} \approx 0 k10 z ^ k ≈ z ^ k − 1 {\hat z_k} \approx {\hat z_{k - 1}} z^kz^k1,新的测量结果对估计值的影响就很小。反之,当 k {k} k很小时,测量值与上一次的估计值之间的差就会对新的估计值产生较大的影响。定义公式(3)中的 1 k \frac{1}{k} k1 Δ = \Delta \over = =Δ K k {K_k} Kk ,那么公式(3)可以写成:
z ^ k = z ^ k − 1 + K k ( z k − z ^ k − 1 ) (4) \textcolor{#FF0000}{{\hat z_k} = {\hat z_{k - 1}} + {K_k}({z_k} - {\hat z_{k - 1}})} \tag{4} z^k=z^k1+Kk(zkz^k1)(4)
此时 K k {K_k} Kk是一个调整系数,在本例中 K k ∈ [ 0 , 1 ] {K_k} \in [0,1] Kk[0,1],且随着 k {k} k的增加而减小。公式(4)体现了数据融合的思想,通过调整系数将测量值与上一次的估计值融合在一起。

注:公式(4)是不是与卡尔曼滤波器的公式4非常相似?

卡尔曼滤波器公式4: x ^ k = x ˉ k + K ( z k − H x ˉ k ) {\hat x_k} = {\bar x_k} + {K}({z_k} - H{\bar x_k}) x^k=xˉk+K(zkHxˉk)

1.这个公式中的符号会在后文进行详细讲解;
2.有的同学可能会发现这个公式的形式也许和你在其他地方看见的形式略有差别,这只是符号表示或者是否进行变形的区别,看完后文,你会理解他们之间的异同。

数据融合意味着我们使用两个“不太准确”的结果融合出一个相对准确的估计值,这一思想在工程中有非常广泛的应用,使用多传感器融合可以有效地提高精度和可靠性。
数据融合的思想非常重要,它是推导卡尔曼滤波器的基础,请大家记住并深刻理解。

1.2概率论与协方差矩阵

卡尔曼滤波器是一种基于概率的计算方法,用于处理系统中的不确定性。从这一小节开始,到第二节我们会简单复习一下推导卡尔曼滤波器时,会用到的几个基本概念,如果你已经熟练掌握这些公式概念,可以直接跳转到第二节进行公式推导。

1.2.1概率、期望、方差、标准差

卡尔曼滤波器所研究的多为连续信号,因此涉及的随机变量也多为连续型随机变量。对于连续型随机变量 X {X} X,用 f X ( x ) {f_X}(x) fX(x)代表其概率密度函数,对其取定积分就可以得到随机变量 X {X} X在某一区间内的概率。例如, a ≤ X ≤ b a \le X \le b aXb概率为: P ( a ≤ X ≤ b ) = ∫ a b f X ( x ) d x P(a \le X \le b) = \int_a^b {{f_X}(x)dx} P(aXb)=abfX(x)dx
随机变量 X {X} X期望定义为: E ( X ) = ∫ − ∞ + ∞ x f X ( x ) d x (5) E(X) = \int_{ - \infty }^{ + \infty } {x{f_X}(x)dx} \tag{5} E(X)=+xfX(x)dx(5)

它代表了对随机变量的数值进行平均运算。期望运算是线性运算,存在以下几个重要性质:
E ( a ) = a , a 为常数 E ( a X ) = a E ( X ) , a 为常数 E ( X + Y ) = E ( X ) + E ( Y ) , X 、 Y 是两个随机变量 E ( X Y ) = E ( X ) E ( Y ) , X 、 Y 是两个相互独立的随机变量 (6) \begin{array}{l} E(a) = a,a为常数\\\\ E(aX) = aE(X),a为常数\\\\ E(X + Y) = E(X) + E(Y),X、Y是两个随机变量\\\\ \textcolor{#FF0000}{E(XY) = E(X)E(Y),X、Y是两个相互独立的随机变量} \tag{6} \end{array} E(a)=a,a为常数E(aX)=aE(X),a为常数E(X+Y)=E(X)+E(Y),XY是两个随机变量E(XY)=E(X)E(Y),XY是两个相互独立的随机变量(6)
温馨提示:标红的公式在后文推导中会用到,请读者阅读时稍加留意。

随机变量 X {X} X方差被定义为: V a r ( X ) = ∫ − ∞ + ∞ ( X − E ( X ) ) 2 f X ( x ) d x (7) Var(X) = \int_{ - \infty }^{ + \infty } {{{(X - E(X))}^2}{f_X}(x)dx} \tag{7} Var(X)=+(XE(X))2fX(x)dx(7)
根据公式(5)和(7)可以发现, X {X} X的方差就是 ( X − E ( X ) ) 2 {{(X - E(X))}^2} (XE(X))2的期望,即: V a r ( X ) = E ( ( X − E ( X ) ) 2 ) (8) Var(X) = E({(X - E(X))^2}) \tag{8} Var(X)=E((XE(X))2)(8)
因此,方差描述了随机变量 X {X} X的离散程度 X − E ( X ) {X - E(X)} XE(X)的平均值嘛),方差小意味着堆积变量的概率密度集中在期望 E ( X ) {E(X)} E(X)附近,反之亦然。

根据公式(6)将公式(8)展开得:
V a r ( X ) = E ( ( X − E ( X ) ) 2 ) = E ( ( X − E ( X ) ) ( X − E ( X ) ) ) = E ( X 2 − 2 X E ( X ) + E ( X ) 2 ) = E ( X 2 ) − 2 E ( X E ( X ) ) + E ( X ) 2 = E ( X 2 ) − 2 E ( X ) E ( X ) + E ( X ) 2 = E ( X 2 ) − 2 E ( X ) E ( X ) + E ( X ) E ( X ) = E ( X 2 ) − E ( X ) 2 (9) \begin{aligned} \textcolor{#FF0000}{Var(X) }&= E({(X - E(X))^2})\\ &= E((X - E(X))(X - E(X)))\\ &= E({X^2} - 2XE(X) + E{(X)^2})\\ &= E({X^2}) - 2E(XE(X)) + E{(X)^2}\\ &= E({X^2}) - 2E(X)E(X) + E{(X)^2}\\ &= E({X^2}) - 2E(X)E(X) + E(X)E(X)\\ &= \textcolor{#FF0000}{E({X^2}) - E{(X)^2}} \tag{9} \end{aligned} Var(X)=E((XE(X))2)=E((XE(X))(XE(X)))=E(X22XE(X)+E(X)2)=E(X2)2E(XE(X))+E(X)2=E(X2)2E(X)E(X)+E(X)2=E(X2)2E(X)E(X)+E(X)E(X)=E(X2)E(X)2(9)
方差的性质有:
V a r ( a ) = 0 , a 为常数 V a r ( a X ) = a 2 V a r ( X ) , a 为常数 V a r ( X + Y ) = V a r ( X ) + 2 E ( X − E ( X ) ) ( Y − E ( Y ) ) + V a r ( Y ) , X 、 Y 是两个随机变量 V a r ( X + Y ) = V a r ( X ) + V a r ( Y ) , X 、 Y 是两个相互独立的随机变量 (10) \begin{array}{l} Var(a) = 0,a为常数\\\\ Var(aX) = {a^2}Var(X),a为常数\\\\ Var(X + Y) = Var(X) + 2E(X - E(X))(Y - E(Y)) + Var(Y),X、Y是两个随机变量\\\\ \textcolor{#FF0000}{Var(X + Y) = Var(X) + Var(Y),X、Y是两个相互独立的随机变量} \tag{10} \end{array} Var(a)=0,a为常数Var(aX)=a2Var(X),a为常数Var(X+Y)=Var(X)+2E(XE(X))(YE(Y))+Var(Y)XY是两个随机变量Var(X+Y)=Var(X)+Var(Y)XY是两个相互独立的随机变量(10)
标准差是方差的算数平方根,定义为 σ X = V a r ( X ) {\sigma _X} = \sqrt {Var(X)} σX=Var(X) ,因此 X {X} X的方差也可以写成 V a r ( X ) = σ X 2 Var(X) = \sigma _X^2 Var(X)=σX2

1.2.2正态分布

正态分布也称为高斯分布,大部分随机过程中产生的误差都服从或者接近于正态分布。

如果一个随机变量 X {X} X服从正态分布,它可以表达为 X ∼ N ( μ , σ 2 ) \textcolor{#FF0000}{X \sim N(\mu ,{\sigma ^2})} XN(μ,σ2),其中 μ = E ( X ) \mu = E(X) μ=E(X)代表期望, σ 2 = V a r ( X ) {\sigma ^2} = Var(X) σ2=Var(X)代表方差。

在正态分布下,一个标准差带宽内 ( μ ± σ ) (\mu \pm \sigma ) (μ±σ)的概率为68.27%,在三个标准差带宽内 ( μ ± 3 σ ) (\mu \pm 3\sigma ) (μ±3σ)的概率为99.73%,通过计算数据的均值和标准差,我们可以了解变量的集中趋势和离散程度。
其概率密度为:
f X ( x ) = 1 2 π σ 2 e − ( x − μ ) 2 2 σ 2 {f_X}(x) = \frac{1}{{\sqrt {2\pi {\sigma ^2}} }}{e^{ - \frac{{{{(x - \mu )}^2}}}{{2{\sigma ^2}}}}} fX(x)=2πσ2 1e2σ2(xμ)2
正态分布概率密度

1.2.2.1测量误差的数据融合案例

在工程中,测量误差会被考虑为正态分布。基于这一思想,可以将多个带有误差的测量数据融合在一起,得到一个相对准确的测量值。考虑在1.1小节中的无人机高度测量的例子,如果我们在气压计之外增加一个超声波传感器如图所示,假如通过气压计测得的高度 Z 1 = 50 m {Z_1} = 50m Z1=50m,通过超声波测得的高度 Z 2 = 52 m {Z_2} = 52m Z2=52m,下面我们将运用1.1中的数据融合思想科学地将两者融合在一起并得到一个理论上最优的估计值。
在这里插入图片描述
设想这两种传感器的测量精度完全一样,那么可以简单地取他们的平均值作为估计值,即, Z ^ = 1 2 ( Z 1 + Z 2 ) = 51 m \hat Z = \frac{1}{2}({Z_1} + {Z_2}) = 51m Z^=21(Z1+Z2)=51m(这里记得吗,我们前面说过 ∧ \wedge 代表估计)。而在现实生活中,每一个传感器都有自己的精度范围,测量时产生的随机误差也不相同。定义这两个传感器的误差分别为:
e 1 = Z a − Z 1 e 2 = Z a − Z 2 \begin{array}{l} {e_1} = {Z_a} - {Z_1}\\ {e_2} = {Z_a} - {Z_2} \end{array} e1=ZaZ1e2=ZaZ2
其中, Z a {Z_a} Za是无人机在 K {K} K时刻的真实高度值(下标a代表actual)。在本例中,我们假设气压计的测量误差服从正态分布 e 1 ∼ N ( 0 , σ e 1 2 ) e_1 \sim N(0 ,{\sigma _{{e_1}}^2}) e1N(0,σe12),其中期望 E ( e 1 ) = 0 E({e_1}) = 0 E(e1)=0,标准差 σ e 1 = 1 m {\sigma _{{e_1}}} = 1m σe1=1m,当使用气压计的测量结果 Z 1 = 50 m {Z_1} = 50m Z1=50m时,其真实结果的概率分布如图所示:
在这里插入图片描述
同理,假设超声波传感器的测量误差服从正态分布 e 2 ∼ N ( 0 , σ e 2 2 ) e_2 \sim N(0 ,{\sigma _{{e_2}}^2}) e2N(0,σe22),其中期望 E ( e 2 ) = 0 E({e_2}) = 0 E(e2)=0,标准差 σ e 2 = 0.5 m {\sigma _{{e_2}}} = 0.5m σe2=0.5m,当使用气压计的测量结果 Z 2 = 52 m {Z_2} = 52m Z2=52m时,其真实结果的概率分布如图所示:
在这里插入图片描述
由图可知,由于超声波传感器测量误差的标准差较小( σ e 2 < σ e 1 {\sigma _{{e_2}}} < {\sigma _{{e_1}}} σe2<σe1),所以它在途中所形成的钟形曲线比气压计的曲线更加修长,真实值更大概率第集中在测量值 Z 2 = 52 m {Z_2} = 52m Z2=52m周围。

下一步就是将这两条曲线通过某种方式融合,形成一个误差标准差更小的估计值,根据1.1小节中的公式(4),一个通用的数据融合算法可以写成: Z ^ = Z 1 + K ( Z 2 − Z 1 ) \hat Z = {Z_1} + K({Z_2} - {Z_1}) Z^=Z1+K(Z2Z1)其中, K ∈ [ 0 , 1 ] K \in [0,1] K[0,1]

对于这个 K K K的取值,如果测量结果 Z 1 Z_1 Z1的精度远远高于 Z 2 Z_2 Z2(误差小,即 σ e 1 ≪ σ e 2 {\sigma _{{e_1}}} \ll {\sigma _{{e_2}}} σe1σe2),可以令参数 K = 0 K=0 K=0,此时的估计值 Z ^ = Z 1 \hat Z = {Z_1} Z^=Z1.相反,如果测量结果 Z 1 Z_1 Z1的精度远远低于 Z 2 Z_2 Z2 σ e 1 ≫ σ e 2 {\sigma _{{e_1}}} \gg {\sigma _{{e_2}}} σe1σe2),可令 K = 1 K=1 K=1,此时的估计值 Z ^ = Z 2 \hat Z = {Z_2} Z^=Z2.当 K = 0.5 K=0.5 K=0.5时,则取两者的平均值。

在本例中, σ e 2 < σ e 1 {\sigma _{{e_2}}} < {\sigma _{{e_1}}} σe2<σe1,所以 K K K的取值应该是一个大于0.5的数值,这会使得计算结果偏向于 Z 2 {Z_2} Z2

为了求解最优的参数 K K K,定义估计误差为: e ^ = Z a − Z ^ \hat e = {Z_a} - \hat Z e^=ZaZ^那么根据公式,可得:
e ^ = Z a − Z ^ = Z a − ( Z 1 + K ( Z 2 − Z 1 ) ) = Z a − Z 1 − K ( Z 2 − Z 1 ) = ( Z a − Z 1 ) + K ( Z 1 − Z 2 ) = ( Z a − Z 1 ) + K ( Z 1 − Z 2 + Z a − Z a ) = ( Z a − Z 1 ) + K ( ( Z a − Z 2 ) − ( Z a − Z 1 ) ) \begin{aligned} \hat e &= {Z_a} - \hat Z\\ &= {Z_a} - ({Z_1} + K({Z_2} - {Z_1}))\\ &= {Z_a} - {Z_1} - K({Z_2} - {Z_1})\\ &= ({Z_a} - {Z_1}) + K({Z_1} - {Z_2})\\ &= ({Z_a} - {Z_1}) + K({Z_1} - {Z_2} + {Z_a} - {Z_a})\\ &= ({Z_a} - {Z_1}) + K(({Z_a} - {Z_2}) - ({Z_a} - {Z_1})) \end{aligned} e^=ZaZ^=Za(Z1+K(Z2Z1))=ZaZ1K(Z2Z1)=(ZaZ1)+K(Z1Z2)=(ZaZ1)+K(Z1Z2+ZaZa)=(ZaZ1)+K((ZaZ2)(ZaZ1))又因为: e 1 = Z a − Z 1 e 2 = Z a − Z 2 \begin{array}{l} {e_1} = {Z_a} - {Z_1}\\ {e_2} = {Z_a} - {Z_2}\\ \end{array} e1=ZaZ1e2=ZaZ2所以: e ^ = e 1 + K ( e 2 − e 1 ) \hat e = {e_1} + K({e_2} - {e_1}) e^=e1+K(e2e1)又因为 E ( e 1 ) = E ( e 2 ) = 0 E({e_1}) = E({e_2}) = 0 E(e1)=E(e2)=0,那么,估计误差的期望:
E ( e ^ ) = E ( e 1 + K ( e 2 − e 1 ) ) = E ( ( 1 − K ) e 1 + K e 2 ) = ( 1 − K ) E ( e 1 ) + K E ( e 2 ) = 0 \begin{aligned} E(\hat e) &= E({e_1} + K({e_2} - {e_1}))\\ &= E((1 - K){e_1} + K{e_2})\\ &= (1 - K)E({e_1}) + KE({e_2}) = 0 \end{aligned} E(e^)=E(e1+K(e2e1))=E((1K)e1+Ke2)=(1K)E(e1)+KE(e2)=0估计误差的方差为:
σ e ^ 2 = V a r ( e 1 + K ( e 2 − e 1 ) ) = V a r ( ( 1 − K ) e 1 + K e 2 ) \begin{aligned} \sigma _{\hat e}^2 &= Var({e_1} + K({e_2} - {e_1}))\\ &= Var((1 - K){e_1} + K{e_2}) \end{aligned} σe^2=Var(e1+K(e2e1))=Var((1K)e1+Ke2)由于这两次测量是相互独立的,根据方差运算性质可以写成: σ e ^ 2 = V a r ( ( 1 − K ) e 1 + K e 2 ) = V a r ( ( 1 − K ) e 1 ) + V a r ( K e 2 ) = ( 1 − K ) 2 V a r ( e 1 ) + K 2 V a r ( e 2 ) = ( 1 − K ) 2 σ e 1 2 + K 2 σ e 2 2 \begin{aligned} \sigma _{\hat e}^2 &= Var((1 - K){e_1} + K{e_2})\\ &= Var((1 - K){e_1}) + Var(K{e_2})\\ &= {(1 - K)^2}Var({e_1}) + {K^2}Var({e_2})\\ &=(1 - K{)^2}\sigma _{{e_1}}^2 + {K^2}\sigma _{{e_2}}^2 \end{aligned} σe^2=Var((1K)e1+Ke2)=Var((1K)e1)+Var(Ke2)=(1K)2Var(e1)+K2Var(e2)=(1K)2σe12+K2σe22
为了求估计误差方差的最小值,我们令 d σ e ^ 2 d K = 0 \frac{{d\sigma _{\hat e}^2}}{{dK}} = 0 dKdσe^2=0,即: d σ e ^ 2 d K = d [ ( 1 − K ) 2 σ e 1 2 + K 2 σ e 2 2 ] d K = − 2 ( 1 − K ) σ e 1 2 + 2 K σ e 2 2 = 0 \begin{aligned} \frac{{d\sigma _{\hat e}^2}}{{dK}} &= \frac{{d[{{(1 - K)}^2}\sigma _{{e_1}}^2 + {K^2}\sigma _{{e_2}}^2]}}{{dK}}\\ &= - 2(1 - K)\sigma _{{e_1}}^2 + 2K\sigma _{{e_2}}^2 = 0 \end{aligned} dKdσe^2=dKd[(1K)2σe12+K2σe22]=2(1K)σe12+2Kσe22=0 K K K提出来得: K ∗ = σ e 1 2 σ e 1 2 + σ e 2 2 {K^*} = \frac{{\sigma _{{e_1}}^2}}{{\sigma _{{e_1}}^2 + \sigma _{{e_2}}^2}} K=σe12+σe22σe12
σ e 1 = 1 {\sigma _{{e_1}}} = 1 σe1=1 σ e 2 = 0.5 {\sigma _{{e_2}}} = 0.5 σe2=0.5代入上式得: K ∗ = σ e 1 2 σ e 1 2 + σ e 2 2 = 1 1 + 0.5 2 = 0.8 {K^*} = \frac{{\sigma _{{e_1}}^2}}{{\sigma _{{e_1}}^2 + \sigma _{{e_2}}^2}} = \frac{1}{{1 + {{0.5}^2}}} = 0.8 K=σe12+σe22σe12=1+0.521=0.8
σ e ^ 2 \sigma _{\hat e}^2 σe^2 K K K的二阶导数为:
d 2 σ e ^ 2 d K 2 = d ( − 2 ( 1 − K ) σ e 1 2 + 2 K σ e 2 2 ) d K = 2 ( σ e 1 2 + σ e 2 2 ) > 0 \begin{aligned} \frac{{{d^2}\sigma _{\hat e}^2}}{{d{K^2}}} &= \frac{{d( - 2(1 - K)\sigma _{{e_1}}^2 + 2K\sigma _{{e_2}}^2)}}{{dK}}\\ &= 2(\sigma _{{e_1}}^2 + \sigma _{{e_2}}^2) > 0 \end{aligned} dK2d2σe^2=dKd(2(1K)σe12+2Kσe22)=2(σe12+σe22)>0因此当 K ∗ = σ e 1 2 σ e 1 2 + σ e 2 2 = 0.8 {K^*} = \frac{{\sigma _{{e_1}}^2}}{{\sigma _{{e_1}}^2 + \sigma _{{e_2}}^2}}= 0.8 K=σe12+σe22σe12=0.8时, σ e ^ 2 \sigma _{\hat e}^2 σe^2为最小值,此时可以得到最有估计值: Z ^ = Z 1 + K ∗ ( Z 2 − Z 1 ) = 50 + 0.8 × ( 52 − 50 ) = 51.6 \hat Z = {Z_1} + {K^*}({Z_2} - {Z_1}) = 50 + 0.8 \times (52 - 50) = 51.6 Z^=Z1+K(Z2Z1)=50+0.8×(5250)=51.6
最优估计误差的标准差为: σ e ^ = ( 1 − K ∗ ) 2 σ e 1 2 + ( K ∗ ) 2 σ e 2 2 ≈ 0.45 {\sigma _{\hat e}} = \sqrt {{{(1 - {K^*})}^2}\sigma _{{e_1}}^2 + {{({K^*})}^2}\sigma _{{e_2}}^2} \approx 0.45 σe^=(1K)2σe12+(K)2σe22 0.45这一标准差小于每一个传感器单独测量的误差标准差( σ e ^ < σ e 2 < σ e 1 {\sigma _{\hat e}} < {\sigma _{{e_2}}} < {\sigma _{{e_1}}} σe^<σe2<σe1),数据融合结果如图所示:
在这里插入图片描述

1.2.3协方差矩阵

当两个传感器之间是下相互独立的(一个传感器测量的结果不会影响另一个传感器测量的结果),这是在进行数据融合的时候只需要考虑他们各自的方差即可。但是在某种情况下,两个信号之间存在关联(例如一个信号会放大另一个信号),在融合时就需要考虑两者之间的关联。两组信号之间的联动关系使用协方差表示。当有多组信号时,使用协方差矩阵表示。
在统计学中,方差和标准差都是用来度量数据离散程度的量。方差或标准差越大,说明数据离散程度越大。协方差用于衡量两组变量的联合变化程度。协方差用 σ x i x j \textcolor{#FF0000}{{\sigma _{{x_i}{x_j}}}} σxixj表示。
一个三阶的协方差矩阵为:
在这里插入图片描述

协方差矩阵是一个方阵,其维度和变量个数相同,其对角线上的元素是单个变量的方差,其余位置是两两不同变量之间的协方差。因为 σ x i x j = σ x j x i \textcolor{#FF0000}{{\sigma _{{x_i}{x_j}}}={\sigma _{{x_j}{x_i}}}} σxixj=σxjxi,所以协方差矩阵是对称阵,即 C ( x 1 , x 2 , x 3 ) = C T ( x 1 , x 2 , x 3 ) \textcolor{#FF0000}{C({x_1},{x_2},{x_3}) = {C^T}({x_1},{x_2},{x_3})} C(x1,x2,x3)=CT(x1,x2,x3)

对于一组统计数据,协方差矩阵可以简洁明确地给出每个变量之间的联动关系以及变量自身的离散程度。如图中所示:
在这里插入图片描述
在卡尔曼滤波器中,我们关心的是随机变量之间的协方差与协方差矩阵。

首先讨论随机变量的协方差,考虑两个随机变量 X 1 {X_1} X1 X 2 {X_2} X2,他们之间的协方差定义为:
σ X 1 X 2 = C o v ( X 1 , X 2 ) = E ( ( X 1 − E ( X 1 ) ) ( X 2 − E ( X 2 ) ) ) = E ( X 1 X 2 − X 1 E ( X 2 ) − E ( X 1 ) X 2 + E ( X 1 ) E ( X 2 ) = E ( X 1 X 2 ) − E ( X 1 ) E ( X 2 ) − E ( X 1 ) E ( X 2 ) + E ( X 1 ) E ( X 2 ) = E ( X 1 X 2 ) − E ( X 1 ) E ( X 2 ) \begin{aligned} {\textcolor{#FF0000}{\sigma _{{X_1}{X_2}}}} &= C{\rm{ov}}({X_1},{X_2}) = E(({X_1} - E({X_1}))({X_2} - E({X_2})))\\ &= E({X_1}{X_2} - {X_1}E({X_2}) - E({X_1}){X_2} + E({X_1})E({X_2})\\ &= E({X_1}{X_2}) - E({X_1})E({X_2}) - E({X_1})E({X_2}) + E({X_1})E({X_2})\\ &=\textcolor{#FF0000}{ E({X_1}{X_2}) - E({X_1})E({X_2}}) \end{aligned} σX1X2=Cov(X1,X2)=E((X1E(X1))(X2E(X2)))=E(X1X2X1E(X2)E(X1)X2+E(X1)E(X2)=E(X1X2)E(X1)E(X2)E(X1)E(X2)+E(X1)E(X2)=E(X1X2)E(X1)E(X2)
特别地,当 X = X 1 = X 2 X = {X_1} = {X_2} X=X1=X2时,上式变成 C o v ( X , X ) = E ( X 2 ) − E 2 ( X ) = V a r ( X ) C{\rm{ov}}(X,X) = E({X^2}) - {E^2}(X) = Var(X) Cov(X,X)=E(X2)E2(X)=Var(X),这说明方差就是一个随机变量与其自身的协方差。另外,如果 X 1 {X_1} X1 X 2 {X_2} X2相互独立,则 E ( X 1 X 2 ) = E ( X 1 ) E ( X 2 ) E({X_1}{X_2}) = E({X_1})E({X_2}) E(X1X2)=E(X1)E(X2),可得 C o v ( X 1 , X 2 ) = 0 Cov({X_1},{X_2}) = 0 Cov(X1,X2)=0,即两个相互独立的随机变量之间没有联动关系,协方差为0。
在这里插入图片描述
根据矩阵运算法则和期望计算法则可得:
在这里插入图片描述

定义一个 2 × 1 2 \times 1 2×1随机向量 X = [ X 1 X 2 ] X = \left[ {\begin{matrix} {{X_1}}\\ {{X_2}} \end{matrix}} \right] X=[X1X2],它的期望 E ( X ) = [ E ( X 1 ) E ( X 2 ) ] E(X) = \left[ \begin{array}{l} E({X_1})\\ E({X_2}) \end{array} \right] E(X)=[E(X1)E(X2)]可得: [ X 1 − E ( X 1 ) X 2 − E ( X 2 ) ] = X − E ( X ) \left[ {\begin{matrix} {{X_1} - E({X_1})}\\ {{X_2} - E({X_2})} \end{matrix}} \right] = X - E(X) [X1E(X1)X2E(X2)]=XE(X)则: C ( X 1 , X 2 ) = E [ ( X − E ( X ) ) ( X − E ( X ) ) T ] C({X_1},{X_2}) = E\left[ {(X - E(X)){{(X - E(X))}^T}} \right] C(X1,X2)=E[(XE(X))(XE(X))T]将其扩展到一般形式,考虑一个由 n n n个随机变量组成的 n × 1 n\times 1 n×1向量: X = [ X 1 ⋮ X n ] X = \left[ \begin{array}{l} {X_1}\\ \vdots \\ {X_n} \end{array} \right] X= X1Xn 如果向量X中的每一个随机变量 X i X_i Xi都服从正态分布,即 X i ∼ N ( μ X i , σ X i 2 ) {X_i} \sim N({\mu _{{X_i}}},\sigma _{{X_i}}^2) XiN(μXi,σXi2),则定义 X X X的期望为: E ( X ) = [ E ( X 1 ) ⋮ E ( X n ) ] = [ μ X 1 ⋮ μ X n ] = μ X E(X) = \left[ \begin{array}{l} E({X_1})\\ \vdots \\ E({X_n}) \end{array} \right] = \left[ \begin{array}{l} {\mu _{{X_1}}}\\ \vdots \\ {\mu _{{X_n}}} \end{array} \right] = {\mu _X} E(X)= E(X1)E(Xn) = μX1μXn =μX
μ X {\mu _X} μX是一个 n × 1 n\times 1 n×1向量,则 X X X的协方差矩阵为:在这里插入图片描述
此时,我们可以称这个由随机变量组成的向量 X X X服从正态分布 X ∼ N ( μ X , C ( X ) ) X \sim N({\mu _X},C(X)) XN(μX,C(X))。特别的,当期望向量 μ X = [ μ X 1 ⋮ μ X n ] = [ 0 ⋮ 0 ] = 0 {\mu _X} = \left[ \begin{array}{l} {\mu _{{X_1}}}\\ \vdots \\ {\mu _{{X_n}}} \end{array} \right] = \left[ \begin{array}{l} 0\\ \vdots \\ 0 \end{array} \right] = 0 μX= μX1μXn = 00 =0时, X X X服从正态分布 X ∼ N ( 0 , C ( X ) ) X \sim N(0,C(X)) XN(0,C(X)),其中协方差矩阵可以写成: C ( X ) = E [ X X T ] C(X) = E[X{X^T}] C(X)=E[XXT]

2.线性卡尔曼滤波器推导

2.1卡尔曼滤波器的研究模型

接下来介绍卡尔曼滤波器的研究对象以及被估计的信号。

### MPC 多方安全计算介绍 多方安全计算(Secure Multi-Party Computation, MPC)是种分布式密码学技术,旨在使多个参与方能够在不泄露各自隐私数据的前提下共同完成项计算任务[^1]。这项技术最早由姚期智院士在1982年提出,通过解决所谓的“姚氏百万富翁问题”,展示了即使在没有可信第三方的情况下,也能实现两方比较财富大小而不透露具体数值的可能性。 MPC 的核心在于设计出既安全又高效的计算协议,这些协议能够确保在整个计算过程中各参与方的数据保持机密性。为了达到这目标,MPC 利用了多种先进的密码学手段,比如秘密共享、同态加密以及混淆电路等。此外,不同的 MPC 框架如 ABY、ABY3 和 CrypTen 提供了适用于各种环境的支持,涵盖了从半诚实体到完全恶意行为者的不同假设条件下的安全性保障。 ### 应用场景实例 #### 金融领域 在个典型的银行间信用评分合作案例中,多家金融机构希望通过联合分析客户交易记录来进行风险评估,但出于合规性和竞争考虑无法直接交换敏感信息。借助 MPC 技术,各方可以在不解密原始数据的基础上协同构建预测模型,从而提高决策准确性的同时维护个人隐私[^4]。 #### 医疗保健 当医院想要与其他机构分享患者健康状况统计数据用于科研目的时,传统方法可能会涉及大量个人信息传输的风险。利用 MPC 方案,则可以让各个医疗机构输入脱敏后的病例特征参与到全局统计运算之中,最终得到汇总结果而无需暴露单个病患的具体情况。 #### 政府部门协作 政府部门之间经常面临跨区域政策制定的需求,例如城市交通规划可能涉及到相邻行政区划内的车流量监测数据融合。采用 MPC 可以有效促进这类多主体间的资源共享,在保证信息安全性的前提下优化资源配置效率。 ```python def mpc_example(parties_data): """ A simplified example of how parties can contribute data to an MPC protocol. Args: parties_data (list): List containing private datasets from each party Returns: result: The computed outcome without revealing individual inputs """ # Placeholder function representing the actual secure computation process pass ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值