线性高斯系统的状态估计#
离散批量优化#
运动和观测方程#
在离散时间线性时变的条件下,定义运动和观测方程:
xk=Ak−1xk−1+vk+wk,k=1,⋯,Kyk=Ckxk+nk,k=0,⋯,K
vk 是确定性变量,其他都是随机变量。噪声和初始状态一般假设为互不相关,并且在各个时刻与自己也互不相关。Ak 为转移矩阵,Ck 为观测矩阵。
最大后验估计#
最大后验估计的思想是使得在样本出现的条件下参数的后验概率最大化。也就是在已知输入 vk 和观测 yk 的条件下,系统状态 xk 概率最大化。即:
^x=argmaxx p(x|v,y)
其中 ^x 表示后验估计,x=x0:K=(x0,⋯,xK) ,v=(˘x,v1:K) ,y=y0:K=(y0,⋯,yK) 。
根据贝叶斯公式:
^x=argmaxx p(x|v,y)=argmaxxp(y|x)p(x|v)∫xp(y|x)p(x|v)dx=argmaxx p(y|x)p(x|v)
假设所有时刻的噪声是无关的。上式中:
p(y|x)=K∏k=0P(yk|xx)p(x|v)=p(x0|˘x0)K∏0p(xk|xk−1,vk)
其中,
p(x0|˘x0)=1√(2π)Ndet˘P0exp(−12(x0−˘x0)T˘P0−1(x0−˘x))p(xk|xk−1,vk)=1√(2π)NdetQkexp(−12(xk−Akxk−1−vk)TQ−1k(xk−Akxk−1−vk))p(yk|xk)=1√(2π)MdetRkexp(−12(yk−Ckxk)TR−1(yk−Ckxk))
上式中,Qk 是输入 vk 的噪声,Rk 是观测的噪声。代入到最大后验估计可知:
argmaxxp(y|x)p(x|v)=argmaxxK∏k=0p(yk|xk)p(x0|˘x0)K∏k=1p(xk|xk−1,vk)=argmaxxK∏k=01√(2π)MdetRkexp(−12(yk−Ckxk)TR−1(yk−Ckxk))1√(2π)Ndet˘P0exp(−12(x0−˘x0)T˘P0−1(x0−˘x))K∏k=11√(2π)NdetQkexp(−12(xk−Akxk−1−vk)TQ−1k(xk−Akxk−1−vk))
对最大后验估计取对数:
L(x)=K∑k=0−12(yk−Ckxk)TR−1(yk−Ckxk)+K∑k=1(−12(xk−Akxk−1−vk)TQ−1k(xk−Akxk−1−vk))+(−12(x0−˘x0)T˘P0−1(x0−˘x))+(−K+12ln((2π)MdetRk)−K2ln((2π)NdetQk)−12ln((2π)Ndet˘P0))
简化一下上式,上式共有四项,最后一项(最后用括号括起来的三个)与 x 无关,可忽略,令第一项为 ∑Kk=0Jy,k(x) ,第二项和第三项为 ∑Kk=0Jv,k(x) 。所以整体的目标函数有:
J(x)=K∑k=0(Jv,k(x)+Jy,k(x))
由于取了对数的原因,所以最小化这个目标函数来求解 x 的值。接下来我们可以把这个目标函数写成矩阵的形式。那么就有:


J(x)=12(z−Hx)TW−1(z−Hx)
对 xT 求导,并令其导数为 0:
∂J(x)∂xT=−HW−1(z−Hx)=0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人