Как использовать скользящую среднюю для фильтрации значений акселерометра в iPhone OS

Я хочу отфильтровать значения акселерометра с помощью скользящей средней, как это делается? Спасибо

1 ответов


простой, однополюсный, низкочастотный, рекурсивный IIR-фильтр быстр и прост в реализации, например

xf = k * xf + (1.0 - k) * x;
yf = k * yf + (1.0 - k) * y;

где x, y-сырые (нефильтрованные) сигналы акселерометра X/Y, xf, yf-отфильтрованные выходные сигналы, а k определяет постоянную времени фильтров (Обычно значение между 0,9 и 0,9999..., где больший k означает более длинную постоянную времени).

вы можете определить k эмпирически, или если вы знаете требуемую частоту отключения,Fc, тогда вы можно использовать формулу:

k = 1 - exp(-2.0 * PI * Fc / Fs)

здесь Fs частота дискретизации.

обратите внимание, что xf, yf-это предыдущие значения выходного сигнала на RHS и новые выходные значения на LHS выражения выше.

обратите внимание также, что мы предполагаем, что вы будете отбирать сигналы акселерометра через регулярные промежутки времени, например, каждые 10 мс. Постоянная времени будет функцией как k, так и этого интервала выборки.