Контекст: я пытаюсь улучшить значения, возвращаемые iPhone CLLocationManager, хотя это более распространенная проблема.Ключевым моментом является то, что CLLocationManger возвращает данные о текущей скорости, как и когда она ощущается, а не с фиксированной частотой дискретизации.
Я хотел бы использовать уравнение обратной связи для повышения точности
v=(k*v)+(1-k)*currentVelocity
, где currentVelocity - это скорость, возвращаемая didUpdateToLocation: fromLocation: и v - выходная скорость (также используется для элемента обратной связи).
Из-за «как и когда»nature of didUpdateToLocation: fromLocation: я мог бы рассчитать временной интервал с момента его последнего вызова и сделать что-то вроде
for (i=0;i<timeintervalsincelastcalled;i++) v=(k*v)+(1-k)*currentVelocity
, которое бы работало, но не тратит циклов.Тем более, что я, вероятно, хочу, чтобы интервалы времени, измеряемые как измеряемые как десятые доли секунды.
Есть ли способ решить эту проблему без цикла?т.е. переделать (интегрировать?) формулу, чтобы я поместил интервал в уравнение и получил тот же ответ, что и при итерации?