我需要一个先进的卡尔曼滤波算法的解释.最好是C代码,但只有算法对我有用.
卡尔曼滤波器是维纳滤波器的专用版本.具体而言,卡尔曼滤波器通过应用该领域特定知识来获取关于问题域的信息并增强维纳滤波器.我发现维基百科页面是理解算法细节的极好参考源.
这里不重复具体细节(没有线性代数图像函数),卡尔曼滤波器逐步估计未来状态(就像Wiener滤波器一样).特别是,我们估计状态,应用问题域特定的噪声估计和状态变化近似,然后迭代.也就是说,我们采用当前的状态观测,过滤那些观测值,预测下一个状态,然后将该输出结合起来产生一些新的下一个状态观测值.
我发现卡尔曼滤波器对于预测运动路径非常有用.由于运动路径是平滑的,卡尔曼滤波器工作得特别好 - 使用过去已知的状态观察可以很容易地预测运动.因此,假设您正在驾驶汽车行驶,您将汽车的当前坐标记录为当前状态.然后,您可以过滤过去的状态观察(您以前的位置),以预测汽车的下一个点(及时).请注意,您可以应用物理定律(比如动量)来自定义此过滤器,并提出相当合理的结果.速度或方向的随机变化对预测有一些影响.
看看这个C语言实现,你可以看到,我们有两个主要功能在运行卡尔曼滤波器estimate
和update
(在维基百科文章 talkes这些,但称estimate
" predict
").
最终,您需要确定一些非常具体的统计数据,以确定您希望应用卡尔曼滤波器的问题.特别是,您需要生成/记录/观察您观察到的噪声信号的方差随时间演变的统计数据.假设您预测的过程也是随机的,因此您还需要估计其统计数据.