神奇的权值

问题是这样的:做机器人定位,无线基站周期性地测量到机器人的距离,需要对这个测量值实时过滤异常数据。

主要的难点是实时,每来一个测量值就立即要判断接受或者抛弃这个数据,而且没有其他运动数据,不适合用卡尔曼滤波。

我的思路:机器人运动速度总有上限,用前几次测得的距离和时刻计算出速度,速度过大就异常了,但是也可能是前几次的数据有异常,比较简单的思路就是利用最近的三次历史数据判断,计算出的三个速度都正常,那这个数据就极大可能是正常数据。但是这样判断,正常的数据就很容易误判为异常了,例如如果计算的最近三个速度有一个过大,但是如果最近连续的五个速度,其他四个都正常,也是可以判断为正常。

通过多次尝试,发现等比数列有一些有趣的特性,可以很形象地用作无限长序列的加权求和权值。

等比数列和求和公式:

1,q,q^2,q^3……

S=(1 - q^n)/(1 - q)

例如q取0.75,那么你会发现任意连续三项的和都会大于这三项之后所有项的和。

再对等比数列归一化,使得无穷项和为1。当q<1时,数列绝对收敛,无穷级数和为常数1/(1 - q),对每一项除以1/(1 - q),等比数列之和就是1了,就可以作为权值用了。

如果想变一下,将连续三项变成连续五项,也有办法,0.5^(1/N) > q > 0.5^(1/(N-1)),满足这个条件的q,等比数列的任意连续N项和都会大于后面所有项的和了,也就可以理解为最新连续N项的重要性大于较旧的所有项重要性。

等比数列还有一个好处,需要无穷项求和的时候,只需要将上一次结果乘以q,加上最新测量值乘以(1 - q),就可以实现一个无穷长序列的加权平均了,而这个 q 就可以按上面的“连续N项重要性大于之前所有项”的公式得出。

由 N 计算 q 的那个公式怎么推出来的呢? 就是让归一化后的等比数列前N项和等于0.5,然后求得q=0.5^(1/N),则q比0.5^(1/N)小的时候,前N项和就大于0.5了。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页