2010-11-24 2 views
6

Я делаю некоторые математические данные по гироскопам и акселерометрам, и я хотел бы получить фильтр нижних частот для результирующих данных. Так может ли кто-нибудь опубликовать некоторый общий код для фильтра нижних частот?Как реализовать фильтр LowPass?

+0

вы хотите код для генерации коэффициентов или просто выполнить фильтрацию? должен ли он быть IIR или КИХ-фильтром? – Guy 2010-11-24 22:20:10

ответ

6

1-го порядка БИХ-фильтр нижних частот может иметь вид:

output_value = rate * input_value + (1.0 - rate) * previous_output_value; 

, которая в значительной степени то, что внутри Пример акселерометра Apple от Apple. Вы выбираете параметр скорости в зависимости от частоты (очень грубо встряски в секунду), которую вы хотите свернуть или начать ослаблять, чтобы получить более плавный результат и частоту дискретизации входных данных.

2

Фильтр нижних частот - это просто сглаживание результатов для удаления высоких частот. Простейшим фильтром нижних частот является коробчатый фильтр, который выполняется путем усреднения n выборок вместе.

Для усреднения 2 образца вместе это так просто, как делают:

sample[n] (sample[n] + sample[n + 1])/2; 
2

Если пример Apple AccelerometerGraph слишком сложный для вас, я создал более простой пример акселерометра для своего класса, который вы можете скачать here. Это реализует простой фильтр нижних частот и верхних частот для сырых значений акселерометра, затем записывает результаты на экран.

Как hotpaw2 и G описывают, это использует очень простой средневзвешенное качению для расчета фильтра:

UIAccelerationValue lowPassFilteredXAcceleration = (currentXAcceleration * kLowPassFilteringFactor) + (previousLowPassFilteredXAcceleration * (1.0 - kLowPassFilteringFactor));