适用于iOS的Kalman过滤器

san*_*edi 4 ios kalman-filter ibeacon

我正在尝试从部署在实验室天花板上的低功耗蓝牙信标获得平滑的rssi值。我使用了加权均值滤波器和移动平均滤波器,但效果不佳。通过各种期刊论文,我知道卡尔曼滤波器可以用于此目的。但是我无法获得合适的数学方程来使用Objective-C进行编码。有人可以提供有关数学方程式或卡尔曼滤波器实现的任何提示吗?非常感谢。

Ben*_*son 5

这样的一维情况意味着所有矩阵实际上只是标量值。您需要知道两件事:

  1. R,测量方差。您可以通过准确记录一系列RSSI值(在固定位置)来正常进行测量,然后测量它们的方差,从而直接进行测量。您可以使用Excel或python轻松完成此操作,甚至可以从头开始编写自己的代码。
  2. Q,过程差异。这是您期望RSSI在相同的时间内(两次测量之间)实际发生的变化。您也可以对此进行度量,也可以对此进行推理。

如果查看卡尔曼滤波器方程,您会发现这P与实际测量值无关,仅取决于上面的两个值。结果,由于它们是恒定的,P将收敛到固定值。并且由于K(卡尔曼增益)仅依赖于这些值,因此它将收敛。对于像您这样的应用程序,通常只要找到稳定状态K并一直使用它就足够了。

现在,这只是创建简单的移动平均滤波器的一种复杂方式(但在最小二乘意义上是最佳的)。