Я хочу отфильтровать значения акселерометра с помощью скользящего среднего значения, как это сделано? Спасибо
Простой однополюсный рекурсивный БИХ-фильтр нижних частот можно быстро и легко реализовать, например
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 - это предыдущие значения выходного сигнала на правой стороне и новые выходные значения на левой стороне выражения выше.
Обратите внимание, что здесь предполагается, что вы будете производить выборку сигналов акселерометра через регулярные промежутки времени, например каждые 10 мс. Постоянная времени будет функцией как k, так и этого интервала выборки.