Matlab的卡尔曼滤波工具箱

Matlab的卡尔曼滤波工具箱

作者:凯文·墨菲,1998年。
上次更新时间:2004年6月7日。

此工具箱支持过滤、平滑和参数估计(使用EM)用于线性动力系统。

功能

什么是卡尔曼滤波器?

对于一个优秀的网站,看见韦尔奇/主教KF第页.关于简短的介绍,请继续阅读。。。

线性动力系统是一个部分可观测的随机过程,具有线性动力学和线性观测都受到高斯噪声的影响。它可以定义如下,其中X(t)是时间的隐藏状态t、 Y(t)是观测值。

x(t+1)=F*x(t)+w(t),w~N(0,Q),x(0)~N(x(0),V(0))y(t)=H*x(t)+v(t),v~N(0,R)

卡尔曼滤波器是一种对此进行滤波的算法模型,即计算P(X(t)|Y(1)。..,Y(t))。
Rauch-Tung-Striebel(RTS)算法执行固定间隔离线平滑,即计算P(X(t)|Y(1)。..,Y(T)),对于T≤T。

卡尔曼滤波示例

这里有一个简单的例子。考虑一个粒子在平面内移动在其轨迹中受到随机扰动的恒定速度。新位置(x1,x2)是旧位置加上速度(dx1,dx2)加上噪声w。
[x1(t)]=[1 0 1 0][x1[t-1)]+[wx1]【x2(t)】【0 1 0 1】【x2【t-1)】【wx2】[dx1(t)][0 0 1 0][dx1-(t-1)][wdx1]【dx2(t)】【0 0 0 1】【dx2(t-1)】【wdx2】
我们假设我们只观察粒子的位置。
[y1(t)]=[1 0 0][x1(t)]+[vx1][年2(t)][0 1 0 0][x2(t)][vx2][dx1(t)][dx2(t)]
假设我们从位置(10,10)开始向右移动速度(1,0)。我们采样了一条长度为15的随机轨迹。下面我们展示了过滤和平滑的轨迹。
滤波估计的均方误差为4.9;对于平滑估计为3.2。平滑估计不仅更好,而且我们知道它更好,如较小的不确定性椭圆所示;这可以帮助解决例如数据关联问题。注意平滑的椭圆在末端是如何变大的,因为点看到的数据较少。此外,请注意过滤的速度椭圆达到其稳态(Ricatti)值。(单击
在这里查看用于生成此图片,它说明了使用该工具箱有多么容易。)

非线性和非高斯呢系统?

对于非线性系统,我强烈推荐ReBEL公司Matlab包,它实现了扩展卡尔曼滤波器,无迹卡尔曼滤波器等。(请参见无中心滤波与非线性估计,S Julier和J Uhlmann,Proc。IEEE,92(3),401-4222004年。另外,一个小校正.)

对于具有非高斯噪声的系统,我建议微粒过滤(PF),这是一种流行的顺序蒙特卡罗技术。请参见还有这个关于…的讨论粒子过滤器的优缺点.以及以下教程:M.Arulampalam、S.Maskell、N.Gordon、T.Clapp、,“粒子教程在线非线性/非高斯贝叶斯跟踪滤波器”电气与电子工程师协会《信号处理学报》,第50卷,第2期,2002年2月,第页174-189 (pdf缓存在此处EKF可以用作PF的提案分发。这种方法比单独使用任何一种方法都好。无气味颗粒过滤器,作者:R van der Merwe,A Doucet,JFG de Freitas和E Wan,2000年5月。Matlab软件UPF也可提供。

盖茨比阅读小组非线性动力系统

卡尔曼滤波和状态空间模型

推荐读数