Фильтрация UIAcceleration

Я нашел следующий фрагмент кода в рекомендациях Apple:

- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration
{
    //Use a basic low-pass filter to only keep the gravity in the accelerometer values
    accel[0] = acceleration.x * kFilteringFactor + accel[0] * (1.0 - kFilteringFactor);
    accel[1] = acceleration.y * kFilteringFactor + accel[1] * (1.0 - kFilteringFactor);
    accel[2] = acceleration.z * kFilteringFactor + accel[2] * (1.0 - kFilteringFactor);
}

Что именно он делает? Что это за фильтр нижних частот? Почему я должен его применять?

Заранее спасибо.


person Ilya Suzdalnitski    schedule 31.07.2009    source источник
comment
это выглядит скорее как PID, но чтобы действительно ответить на ваш вопрос, требуется гораздо больше кода, чем это. (например, что такое ускорение? что такое kFilteringFactor?)   -  person KevinDTimm    schedule 31.07.2009


Ответы (1)


То, что вам нужно сделать, зависит от того, для чего вам нужно значение, но основная идея состоит в том, чтобы уменьшить влияние вибраций от движений рук и тому подобного. Если вы возьмете необработанные значения ускорения и обработаете их как вектор гравитации, вы получите много джиттера.

person Jens Ayton    schedule 31.07.2009