上下文:我正在尝试改进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
哪个会起作用,但浪费周期。特别是因为我可能想要时间间隔,因为它被称为十分之一秒。
有没有办法在没有循环的情况下解决这个问题?即返工(整合?)公式,所以我在一个等式中加入一个区间并得到与迭代时相同的答案?
答案 0 :(得分:1)
您可以根据间隔的大小选择k的值,而不是迭代。例如,如果间隔长度是一小时 - 您可能希望k为0。
对于各种间隔大小预先计算k将很容易,以给出与迭代所给出的相同的答案。只需通过迭代计算变化(你已经有了代码),然后计算代数会给你的k值。
这是一个常见的程序员jedi技巧,有一个查找值表代替昂贵的计算。 (那里,现在我的答案与代码有关!)
答案 1 :(得分:1)