在任意时间获取过滤器的值

时间:2010-05-13 08:50:41

标签: iphone math geolocation signal-processing

上下文:我正在尝试改进iPhone CLLocationManager返回的值,尽管这是一个更普遍适用的问题。关键是CLLocationManger会在它感觉到的时候返回当前速度的数据,而不是以固定的采样率。

我想使用反馈方程来提高准确度

v=(k*v)+(1-k)*currentVelocity

其中currentVelocity是didUpdateToLocation返回的速度:fromLocation:而v是输出速度(也用于反馈元素)。

由于didUpdateToLocation的“as as when”性质:fromLocation:我可以计算自上次调用以来的时间间隔,并执行类似

的操作

for (i=0;i<timeintervalsincelastcalled;i++) v=(k*v)+(1-k)*currentVelocity

哪个会起作用,但浪费周期。特别是因为我可能想要时间间隔,因为它被称为十分之一秒。

有没有办法在没有循环的情况下解决这个问题?即返工(整合?)公式,所以我在一个等式中加入一个区间并得到与迭代时相同的答案?

2 个答案:

答案 0 :(得分:1)

您可以根据间隔的大小选择k的值,而不是迭代。例如,如果间隔长度是一小时 - 您可能希望k为0。

对于各种间隔大小预先计算k将很容易,以给出与迭代所给出的相同的答案。只需通过迭代计算变化(你已经有了代码),然后计算代数会给你的k值。

这是一个常见的程序员jedi技巧,有一个查找值表代替昂贵的计算。 (那里,现在我的答案与代码有关!)

答案 1 :(得分:1)

如果您将原始等式写为

v = k*vCurrent + (1-k)*v 

您可以应用another SO question的答案。