我正试图从我实验室天花板上部署的蓝牙低能量信标中获得平滑的rssi值。我使用了加权均值滤波器和移动平均滤波器,但无法获得良好的结果。通过各种期刊论文,我了解到卡尔曼滤波器可以用于此目的。但我无法用Objective-c得到一个合适的数学方程式。有人可以提供有关数学方程或卡尔曼滤波器实现的任何提示吗?非常感谢。
答案 0 :(得分:5)
像这样的一维情况意味着所有矩阵实际上只是标量值。你需要知道两件事:
R
,测量方差。您可以通过准确记录一系列RSSI值(在固定位置)直接测量它,然后测量它们的方差。您可以使用Excel或python轻松完成此操作,甚至可以从头开始编写自己的代码。Q
,流程差异。这是您期望RSSI在相同的时间内(测量之间)实际变化的程度。你也可以测量它,或者你可以推理它。如果你看一下卡尔曼滤波器方程,你会注意到P
不依赖于你的实际测量,只有上面的两个值。结果,由于它们是常数,P
将收敛到固定值。由于K
(卡尔曼增益)仅依赖于这些值,它也会收敛。对于像您这样的应用程序,通常可以找到稳态K
并一直使用它。
现在,这只是创建简单移动平均滤波器的一种复杂(但在最小二乘意义上是最佳的)方式。
答案 1 :(得分:2)
如果您正在寻找快速实施卡尔曼滤波器,那么值得查看this framework。它是传统滤波器算法的通用实现,它还提供了Matrix结构和在卡尔曼滤波器中使用的矩阵上的所有必要操作