我正在尝试从部署在实验室天花板上的低功耗蓝牙信标获得平滑的rssi值。我使用了加权均值滤波器和移动平均滤波器,但效果不佳。通过各种期刊论文,我知道卡尔曼滤波器可以用于此目的。但是我无法获得合适的数学方程式来用Objective-C进行编码。有人可以提供有关数学方程式或卡尔曼滤波器实现的任何提示吗?非常感谢。
最佳答案
这样的一维情况意味着所有矩阵实际上只是标量值。您需要知道两件事:
R
,测量方差。您可以通过准确记录一系列RSSI值(在固定位置)来直接进行测量,然后测量它们的方差,从而直接进行测量。您可以使用Excel或python轻松完成此操作,甚至可以从头开始编写自己的代码。 Q
,过程差异。这是您期望RSSI在相同的时间内(两次测量之间)实际发生的变化。您也可以对此进行衡量,也可以对此进行推理。 如果查看卡尔曼滤波器方程,您会注意到
P
不依赖于您的实际测量值,仅取决于上面的两个值。结果,由于它们是常数,因此P
将收敛为固定值。而且由于K
(卡尔曼增益)仅依赖于这些值,因此它也会收敛。对于像您这样的应用程序,通常只要找到稳定的K
并一直使用它就足够了。现在,这只是创建简单的移动平均滤波器的一种复杂的方法(但在最小二乘意义上是最佳的)。
关于ios - 适用于iOS的Kalman过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28871156/