После выполнения оценки состояния нелинейной системы с помощью линейных, расширенных, или сигма-точечного фильтра Калмана, или алгоритмов фильтра частиц, вы подтверждаете оценку перед развертыванием кода в вашем приложении. Если валидация указывает на низкое доверие оценки, проверьте следующие заданные вами свойства фильтра:
Начальное состояние и ковариационные значения состояния - Если вы обнаруживаете, что измеренные и оцененные выходы вашей системы расходятся в начале оценки состояния, проверяйте заданные начальные значения.
Функции перехода и измерения состояний - Проверьте, что заданные вами функции являются хорошим представлением нелинейной системы. Если истинная система является непрерывной, для реализации алгоритмов вы дискретизируете переходы и уравнения измерения и используете дискретизированные версии. Если результаты оценки состояния не удовлетворительны, рассмотрите уменьшение шага расчета, используемого для дискретизации. Также попробуйте другой метод дискретизации. Для примера того, как дискретизировать функцию перехода состояния в непрерывном времени, введите edit vdpStateFcn.m
в командной строке. Также см., Оценка нелинейного состояния с использованием сигма-точечного фильтра Калмана и фильтра частиц.
Обработка и измерение значений ковариации шума - Если различие между оцененными и измеренными выходами вашей системы большая, попробуйте задать различные значения для значений ковариации шума процесса и измерения.
Выбор алгоритма - Если вы используете расширенный алгоритм фильтра Калмана, можно попробовать сигма-точечный фильтр Калмана или вместо этого алгоритм фильтра частиц. Сигма-точечный фильтр Калмана и фильтр частиц могут лучше захватывать нелинейности в системе.
Чтобы решить проблему оценки состояния, можно создать несколько версий фильтра с различными свойствами, выполнить оценку состояния и выбрать фильтр, который дает лучшие результаты валидации.
В командной строке, если вы хотите скопировать существующий объект фильтра и затем изменить свойства скопированного объекта, используйте clone
команда. Не создавать дополнительные объекты с помощью синтаксиса obj2 = obj
. Любые изменения, внесенные в свойства нового объекта, созданные таким образом (obj2
) также измените свойства исходного объекта (obj
).