Uploaded by freza.yagoza

Простая модель адаптивного фильтра Калмана средствами Python

advertisement
Выгорание в IT
КАК СТАТЬ АВТОРОМ
Моя лента
Все потоки
Разработка
Какие события ждут нас в будущем? Ответ в IT-Календаре
Администрирование
Дизайн
Менеджмент
Маркетинг
ЧИТАЮТ СЕЙЧАС
Scorobey 6 мая 2017 в 17:42
Простая модель адаптивного фильтра Калмана средствами
Python
5 мин
Войти
Научпоп
Для Героев III вышло долгожданное
полномасштабное обновление —
Фабрика. Почему это по-настоящему
уникальное явление?
28K
Python*
12K
30 +30
Проблема
Вечная проблема любых измерений их низкая точность. Основных способов повышения точности
два, первый состоит в повышении чувствительности к измеряемой величине, однако при этом как
правило растёт чувствительность и к неинформативным параметрам, что требует принятия
Как я с 0 поднял свой уровень
английского до B2 и подтвердил этот
уровень на экзамене IELTS Academic
46K
115 +115
дополнительных мер по их компенсации. Второй способ состоит в статистической обработке
многократных измерений, при этом среднеквадратичное отклонение обратно пропорциональна
корню квадратному из числа измерений.
Статистические методы повышения точности разнообразны и многочисленны, но и они делятся на
Что если сильный ИИ живёт среди нас
уже месяц?
14K
79 +79
пассивные для статических измерений и активные для динамических измерений, когда
измеримая величина изменяется во времени. При этом сама измеряемая величина так же, как и
помеха являются случайными величинами с изменяющимися дисперсиями.
Почему больше не стоит писать для
Рунета
40K
207 +207
Адаптивность методов повышения точности динамических измерений следует понимать, как
использование прогнозирования значений дисперсий и погрешности для следующего цикла
измерений. Такое прогнозирование осуществляется в каждом цикле измерений. Для этой цели
применяются фильтры Винера, работающие в частотной области. В отличии от фильтра Винера,
фильтр Калмана работает во временной, а не в частотной области. Фильтр Калмана был
разработан для многомерных задач, формулировка которых осуществляется в матричной форме.
Матричная форма достаточно подробно описана для реализации на Python в статье [1], [2].
Описание работы фильтра Калмана, приведенная в указанных статьях, рассчитана на
специалистов в области цифровой фильтрации. Поэтому возникла необходимость рассмотреть
Прикладное терраформирование или
как затратив 1 кВт получить 1.5 МВт
3.1K
17 +17
Разрабатываем маркетплейс для
снабжения: опыт ЕВРАЗа
Турбо
работу фильтра Калмана в более простой скалярной форме.
Немного теории
ИСТОРИИ
Рассмотрим схему фильтра Калмана для его дискретной формы.
Здесь G(t) блок работа которого описывается линейными соотношениями. На выходе блока
вырабатывается неслучайный сигнал y(t). Этот сигнал суммируется с шумом w(t), который
Ищем Деда
возникает внутри контролируемого объекта. В результате такого сложения, получаем новый
Слово новичкам
Мороза
сигнал x(t). Этот сигнал представляет сумму неслучайного сигнала и шума и является случайный
+28
132
3 +3
сигналом. Далее сигнал x(t) преобразуется линейным блоком H(t), суммируясь с шумом v(t),
распределённым по-другому чем w(t) закону. На выходе линейного блока H(t) получаем
случайный сигнал z(t), по которому и определяется неслучайный сигнал y(t). Следует отметить,
РАБОТА
что линейные функции блоков G(t) и Н(t) могут тоже зависеть от времени.
Будем считать, что случайные шумы w(t) и v(t) — это случайные процессы с дисперсиями Q, R и
нулевыми математическими ожиданиями. Сигнал x(t) после линейного преобразования в блоке
G(t) распределён во времени по нормальному закону. С учётом изложенного, соотношение для
измеряемого сигнала примет вид:
Django разработчик
37 вакансий
Data Scientist
60 вакансий
Python разработчик
104 вакансии
Постановка задачи
Все вакансии
После фильтра нужно получить максимально возможное приближение y'' к неслучайному сигналу
y(t).
БЛИЖАЙШИЕ СОБЫТИЯ
При непрерывном динамическом измерении каждое следующее состояние объекта, а,
следовательно, и значение контролируемой величины отличается от предыдущего по
экспоненциальному закону с постоянного времени T в текущем интервале времени
,
Ниже приведена программа на Python, в которой решается уравнение для неизвестного не
Открытый урок
«Ранжирование каталога
товаров»
зашумлённого сигнала y(t). Процесс измерения рассматривается для суммы двух
псевдослучайных величин, каждая из которых образуется как функция нормального
распределения от равномерного распределения.
11 января
20:00
Онлайн
Программа для демонстрации работы дискретного адаптивного фильтра Калмана
Подробнее в календаре
В чём отличие предложенного алгоритма от известного
Мною был усовершенствован алгоритм работы фильтра Калмана, приведенный в методических
указаниях [3] для Mathcad:
В результате преждевременной смены состояния для сравниваемой переменной x(t) возрастала
погрешность на участке резких изменений:
Тогда как в моем алгоритме используется начальная прогнозная оценка влияния шумов. Это дало
возможность уменьшить ошибку измерений v(t).
В приведённом алгоритме используются заданные – модельные экспоненциальные функции,
поэтому для наглядности приведём их отдельно на общем графике работы фильтра Калмана.
Код программы для графического анализ работы фильтра
Результат работы программы
Выводы
В статье описана модель простой скалярной реализации фильтра Калмана средствами условно
бесплатного языка программирования общего назначения Python, что расширит область её
применения в целях обучения.
Ссылки
1. Использование фильтра Калмана для определения производных измеряемой величины.
2. Kalman Filtering in Python for Reading Sensor Input.
3. Адаптивный фильтр Калмана.
Теги: Python, фильтр Калмана, линейные динамические системы,
нормальный законы распределения
Хабы: Python
Редакторский дайджест
Присылаем лучшие статьи раз в месяц
Электропочта
70
0
Карма
Рейтинг
Юрий Тараненко @Scorobey
Разработчик учебных программ
Комментарии 3
m03r 6 мая 2017 в 18:42
Python — условно-бесплатный? Это где Вы такое вычитали?
Ответить
drafterleo 6 мая 2017 в 22:12
Но мы же ведь не знаем, каким путём к человеку попал интерпретатор Питона, правда? А в целом
статья — толковая. Если бы ещё код в тетрадку (Jupyter Notebook) был упакован (безусловнобесплатную) — цены б ему не было.
Ответить
Arastas 7 мая 2017 в 00:48
Я так и не понял, а в целом адаптивность предложенного фильтра Калмана? К чему именно он
адаптируется?
Ответить
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.
Публикации
ЛУЧШИЕ ЗА СУТКИ
ПОХОЖИЕ
snakers4 6 часов назад
Для Героев III вышло долгожданное полномасштабное обновление —
Фабрика. Почему это по-настоящему уникальное явление?
Простой
7 мин
12K
Мнение
+58
17
30 +30
BabayMazay 6 часов назад
Февка — некрупная высокотемпературная горелка почти из ничего.
Применение в стеклодувном деле
Простой
7 мин
2.6K
Туториал
+53
22
4 +4
ru_vds 2 часа назад
Становится ли ПО хуже?
Простой
Мнение
9 мин
1.7K
Перевод
+29
17
8 +8
fndk 20 часов назад
Прокрастинация
Простой
4 мин
13K
Из песочницы
+29
91
26 +26
dalerank 17 часов назад
Приёмо-сдаточные на краю земли
15 мин
+21
2.4K
6
7 +7
GeeksCat 7 часов назад
Полная история игровой вселенной «Гарри Поттера» — «Золотое
поколение»
Простой
47 мин
883
Ретроспектива
+15
12
3 +3
AtmosferaVA 3 часа назад
Прикладное терраформирование или как затратив 1 кВт получить 1.5
МВт
Простой
Из песочницы
+13
8 мин
3.2K
Recovery Mode
7
17 +17
slotovi4 23 часа назад
Стартап — Сервис по тестированию. Часть 1. «О проекте»
Простой
11 мин
1.8K
Кейс
+11
12
15 +15
empenoso 15 часов назад
Как вернуть себе потерянные (или украденные из-за санкций?) умные
функции стиральной машины Bosch
Средний
4 мин
10K
Кейс
+9
28
145 +145
Vasjen 20 часов назад
Вжух – и ты потух! Как стать разработчиком, несмотря на выгорание
Простой
+9
9 мин
25
3.8K
12 +12
Разрабатываем маркетплейс для снабжения: опыт ЕВРАЗа
Турбо
Показать еще
МИНУТОЧКУ ВНИМАНИЯ
Промо
Интересно
Турбо
Чёрная пятница станет вечной:
Карты, деньги, два способа оплаты:
Разыскивается Дед Мороз: срочно
промокодус поймал скидки
как устроена СБП
нужна ваша помощь
СРЕДНЯЯ ЗАРПЛАТА В IT
92 956 ₽/мес.
— средняя зарплата во всех ITспециализациях по данным из 34 926 анкет, за
2-ое пол. 2023 года. Проверьте «в рынке» ли
ваша зарплата или нет!
35k
46k
57k
68k
79k
90k
101k
112k
123k
134k
145k
Проверить свою зарплату
Ваш аккаунт
Разделы
Информация
Услуги
Войти
Статьи
Устройство сайта
Корпоративный блог
Регистрация
Новости
Для авторов
Медийная реклама
Хабы
Для компаний
Нативные проекты
Компании
Документы
Образовательные программы
Авторы
Соглашение
Стартапам
Песочница
Конфиденциальность
© 2006–2024, Habr
Техническая поддержка
Настройка языка
Download