Фильтры Kalman являются специализированными версиями фильтров Wiener. В частности, фильтры Калмана получают информацию о проблемной области и улучшают фильтр Винера, применяя знания, специфичные для этой области. Я нашел страницу Википедии отличным справочным источником для понимания особенностей алгоритма.
Не повторяя здесь конкретные детали (без функций отображения линейной алгебры), фильтры Калмана постепенно оценивают будущее состояние (как, впрочем, и фильтры Винера). В частности, мы оцениваем состояние, применяем оценки шума, характерные для проблемной области, и аппроксимации изменения состояния, а затем выполняем итерацию. То есть мы берем текущие наблюдения за состоянием, фильтруем эти наблюдения, прогнозируем следующее состояние, затем объединяем эти выходные данные, чтобы произвести какое-то новое наблюдение следующего состояния.
Я нашел фильтры Калмана весьма полезными для прогнозирования траекторий движения. Поскольку траектории движения гладкие, фильтры Калмана работают особенно хорошо - движение можно легко предсказать, используя прошлые известные наблюдения состояния. Итак, предположим, что вы едете по дороге, вы записываете текущие координаты автомобиля в текущем состоянии. Затем вы фильтруете прошлые наблюдения за состоянием (ваши предыдущие местоположения), чтобы предсказать следующую точку, в которой автомобиль будет (вовремя). Обратите внимание, что вы можете применить законы физики (скажем, импульса), чтобы настроить этот фильтр и получить вполне обоснованные результаты. Случайные изменения скорости или направления оказывают некоторое влияние на прогнозы.
Взгляните на эту C реализацию , вы можете видеть, что у нас есть две основные функции при запуске фильтра Калмана estimate
и update
(статья Википедии говорит об этих , но звонит estimate
"predict
").
В конечном итоге вам потребуется определить некоторые очень специфические статистические данные для проблемы, с которой вы хотите применить фильтр Калмана. В частности, вам необходимо сгенерировать / записать / наблюдать статистику того, как дисперсия шумового сигнала, который вы наблюдаете, развивается с течением времени. Предполагается, что процесс, который вы предсказываете, также является стохастическим, и поэтому вам нужно будет также оценить его статистику.