Matlab的卡尔曼滤波工具箱
Matlab的卡尔曼滤波工具箱 作者:凯文·墨菲,1998年。 上次更新时间:2004年6月7日。 此工具箱支持过滤、平滑和参数估计 (使用EM)用于线性动力系统。
卡尔曼过滤器 kalman_smoother-实现RTS方程 learn_kalman-使用EM找到参数的最大似然估计 sample_lds-生成随机样本 AR_to_SS-将k阶自回归模型转换为状态空间形式 SS_年度 learn_AR-找到参数的最大似然估计 使用最小二乘法
对于一个优秀的网站, 看见 韦尔奇/主教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也可提供。
盖茨比阅读小组 非线性动力系统