TensorFlow - 卡尔曼滤波
flyfish
噪声:也是无用信号,是指观测数据对系统没有贡献或者起干扰作用的信号。
在传感器数据测量中,无用信号表现为幅度干扰。
例如温度测量中,传感器测量值与真实温度之间有一定的随机波动。
噪声是一个随机过程,随机过程有 功率谱密度函数。
高斯白噪声就是干扰信号幅度服从高斯分布,功率谱密度是均匀分布的。
测量是存储误差的,例如你拿着尺子去量一条线的长度,每次读数时都存在误差的,那解决这个问题是,我们是在相同条件下独立的测量这条线的长度,最后计算一个平均数。
还有另一类问题。
有个X,不同的时刻,X是不同的值,随着时刻t的值为X_t,但是X_t不知道是多少,我们就测量它,结果测量的值为Y_t,这个测量结果是包含误差的,误差为Z_t
于是就有这样的式子
Y
t
=
X
t
+
Z
t
Y_t=X_t+Z_t
Yt=Xt+Zt
思路就是知道了
Y
t
Y_t
Yt,估计下
X
t
X_t
Xt是多少
在t时刻和t-1时刻,X的值分别是
X
t
X_t
Xt和
X
t
−
1
)
X_t -_1)
Xt−1),X_t和
X
t
−
1
)
X_t -_1)
Xt−1)之间差了
W
t
W_t
Wt
那就有这样的式子
X
t
=
X
t
−
1
+
W
t
X_t=X_t-1+W_t
Xt=Xt−1+Wt
这个式子就像测量室温,时刻t的温度值为
X
t
X_t
Xt,但是天气情况,阳光情况,密闭情况都会影响到室内温度的变化,这个变化就是
W
t
W_t
Wt。
X
0
∼
N
(
0
,
σ
0
2
)
,
W
t
∼
N
(
0
,
α
2
)
,
Z
t
∼
N
(
0
,
β
2
)
,
X
0
,
W
1
,
W
2
,
⋯
 
,
Z
1
,
Z
2
,
⋯
X_{0} \sim \mathrm{N}\left(0, \sigma_{0}^{2}\right), W_{t} \sim \mathrm{N}\left(0, \alpha^{2}\right), Z_{t} \sim \mathrm{N}\left(0, \beta^{2}\right), X_{0}, W_{1}, W_{2}, \cdots,Z_{1}, Z_{2}, \cdots
X0∼N(0,σ02),Wt∼N(0,α2),Zt∼N(0,β2),X0,W1,W2,⋯,Z1,Z2,⋯
它们之间都是相互独立的,
σ 0 2 , α 2 , β 2 \sigma_{0}^{2}, \alpha^{2},\beta^{2} σ02,α2,β2是已知的,通过 Y 1 , ⋯   , Y t Y_{1}, \cdots, Y_{t} Y1,⋯,Yt估算 X t X_t Xt
t=1的时候,根据Y_1估算X_1
先组成方程组
X
1
=
X
0
+
W
1
,
Y
1
=
X
1
+
Z
1
=
X
0
+
W
1
+
Z
1
X_{1}=X_{0}+W_{1}, \quad Y_{1}=X_{1}+Z_{1}=X_{0}+W_{1}+Z_{1}
X1=X0+W1,Y1=X1+Z1=X0+W1+Z1
再转换成矩阵形式
( Y 1 X 1 ) = ( 1 1 1 0 1 1 ) ( Z 1 W 1 X 0 ) \left( \begin{array}{l}{Y_{1}} \\ {X_{1}}\end{array}\right)=\left( \begin{array}{lll}{1} & {1} & {1} \\ {0} & {1} & {1}\end{array}\right) \left( \begin{array}{l}{Z_{1}} \\ {W_{1}} \\ {X_{0}}\end{array}\right) (Y1X1)=(101111)⎝⎛Z1W1X0⎠⎞
J ≡ ( 1 1 1 0 1 1 ) J \equiv \left( \begin{array}{lll}{1} & {1} & {1} \\ {0} & {1} & {1}\end{array}\right) J≡(101111)
( Y 1 X 1 ) ∼ N ( o , V 1 ) \left( \begin{array}{l}{Y_{1}} \\ {X_{1}}\end{array}\right) \sim \mathrm{N}\left(o, V_{1}\right) (Y1X1)∼N(o,V1)
V 1 ≡ J ( β 2 0 0 0 α 2 0 0 0 σ 0 2 ) J T = ( τ 1 2 + β 2 τ 1 2 τ 1 2 τ 1 2 ) V_{1} \equiv J \left( \begin{array}{ccc}{\beta^{2}} & {0} & {0} \\ {0} & {\alpha^{2}} & {0} \\ {0} & {0} & {\sigma_{0}^{2}}\end{array}\right) J^{T}=\left( \begin{array}{cc}{\tau_{1}^{2}+\beta^{2}} & {\tau_{1}^{2}} \\ {\tau_{1}^{2}} & {\tau_{1}^{2}}\end{array}\right) V1≡J⎝⎛β2000α2000σ02⎠⎞JT=(τ12+β2τ12τ12τ12)
τ 1 2 ≡ V [ X 1 ] = σ 0 2 + α 2 \tau_{1}^{2} \equiv \mathrm{V}\left[X_{1}\right]=\sigma_{0}^{2}+\alpha^{2} τ12≡V[X1]=σ02+α2
计算
μ
1
≡
E
[
X
1
∣
Y
1
=
y
1
]
=
τ
1
2
y
1
τ
1
2
+
β
2
σ
1
2
≡
V
[
X
1
∣
Y
1
=
y
1
]
=
τ
1
2
β
2
τ
1
2
+
β
2
\begin{aligned} \mu_{1} & \equiv \mathrm{E}\left[X_{1} | Y_{1}=y_{1}\right]=\frac{\tau_{1}^{2} y_{1}}{\tau_{1}^{2}+\beta^{2}} \\ \sigma_{1}^{2} & \equiv \mathrm{V}\left[X_{1} | Y_{1}=y_{1}\right]=\frac{\tau_{1}^{2} \beta^{2}}{\tau_{1}^{2}+\beta^{2}} \end{aligned}
μ1σ12≡E[X1∣Y1=y1]=τ12+β2τ12y1≡V[X1∣Y1=y1]=τ12+β2τ12β2
上面是t=1的情况,再看t=2的情况
(
Y
2
X
2
)
=
(
1
1
1
0
1
1
)
(
Z
2
W
2
X
1
)
\left( \begin{array}{c}{Y_{2}} \\ {X_{2}}\end{array}\right)=\left( \begin{array}{ccc}{1} & {1} & {1} \\ {0} & {1} & {1}\end{array}\right) \left( \begin{array}{l}{Z_{2}} \\ {W_{2}} \\ {X_{1}}\end{array}\right)
(Y2X2)=(101111)⎝⎛Z2W2X1⎠⎞
μ
2
≡
E
[
X
2
∣
Y
2
=
y
2
,
Y
1
=
y
1
]
=
μ
1
+
τ
2
2
(
y
2
−
μ
1
)
τ
2
2
+
β
2
=
τ
2
2
y
2
+
β
2
μ
1
τ
2
2
+
β
2
σ
2
2
=
V
[
X
2
∣
Y
2
=
y
2
,
Y
1
=
y
1
]
=
τ
2
2
β
2
τ
2
2
+
β
2
τ
2
2
=
V
[
X
2
∣
Y
1
=
y
1
]
=
σ
1
2
+
α
2
\begin{aligned} \mu_{2} & \equiv \mathrm{E}\left[X_{2} | Y_{2}=y_{2}, Y_{1}=y_{1}\right]=\mu_{1}+\frac{\tau_{2}^{2}\left(y_{2}-\mu_{1}\right)}{\tau_{2}^{2}+\beta^{2}}=\frac{\tau_{2}^{2} y_{2}+\beta^{2} \mu_{1}}{\tau_{2}^{2}+\beta^{2}} \\ \sigma_{2}^{2} &=\mathrm{V}\left[X_{2} | Y_{2}=y_{2}, Y_{1}=y_{1}\right]=\frac{\tau_{2}^{2} \beta^{2}}{\tau_{2}^{2}+\beta^{2}} \\ \tau_{2}^{2} &=\mathrm{V}\left[X_{2} | Y_{1}=y_{1}\right]=\sigma_{1}^{2}+\alpha^{2} \end{aligned}
μ2σ22τ22≡E[X2∣Y2=y2,Y1=y1]=μ1+τ22+β2τ22(y2−μ1)=τ22+β2τ22y2+β2μ1=V[X2∣Y2=y2,Y1=y1]=τ22+β2τ22β2=V[X2∣Y1=y1]=σ12+α2