После того, как вы используете extendedKalmanFilter, unscentedKalmanFilter или команды particleFilter для онлайновой оценки состояния нелинейной системы, подтверждаете оценку прежде, чем развернуть код в вашем приложении. Если валидация указывает на низкую уверенность в оценке, то смотрите Поиск и устранение неисправностей Онлайновая Оценка состояния для следующих шагов. После того, как вы подтвердили онлайновые результаты оценки, можно сгенерировать код C/C++ или автономное приложение с помощью программного обеспечения MATLAB Compiler™ или MATLAB® Coder™.
Чтобы подтвердить производительность вашего фильтра, выполните использование оценки состояния измеренные или моделируемые выходные данные из различных сценариев.
Получите выходные данные из своей системы в различных условиях работы и входных значениях — Чтобы гарантировать, что оценка работает хорошо под всеми условиями работы интереса. Например, предположите, что вы хотите отследить положение и скорость автомобиля с помощью шумных измерений положения. Измерьте данные на различных скоростях автомобиля и медленных и резких маневрах.
Для каждых условий работы интереса получите несколько наборов экспериментальных или моделируемых данных с различной шумовой реализацией — Чтобы гарантировать, что различные шумовые значения не ухудшают производительность оценки.
Для каждого из этих сценариев проверьте производительность фильтра путем исследования выходной оценки погрешности оценки и ошибки оценки состояния. Для примера о выполнении и проверке онлайновой оценки состояния, смотрите, что Нелинейная Оценка состояния Использует Сигма-точечный фильтр Калмана и Фильтр частиц.
Выходная ошибка оценки является различием между измеренным выводом, y, и предполагаемым выводом, yEstimated. Можно получить предполагаемый вывод на каждом временном шаге при помощи функции измерения системы. Например, если vdpMeasurementFcn.m является функцией измерения для вашей нелинейной системы, и вы выполняете оценку состояния с помощью расширенного объекта Фильтра Калмана, obj, можно вычислить предполагаемый вывод с помощью оценок текущего состояния как:
yEstimated = vdpMeasurementFcn(obj.State); estimationError = y-yEstimated;
Здесь obj.State является значением состояния после того, как вы оцениваете состояния с помощью команды predict. предсказанная оценка состояния за время k, оцененное использование измеряло вывод до предыдущего раза k-1.
Ошибки оценки (невязки) должны иметь следующие характеристики:
Маленькое значение — Небольшие ошибки относительно размера выходных параметров увеличивают уверенность в ориентировочных стоимостях.
Нулевое среднее значение
Низкая автокорреляция, кроме в нулевой задержке — Чтобы вычислить автокорреляцию, можно использовать команду xcorr MATLAB.
Когда вы моделируете выходные данные своей нелинейной системы и используете те данные для оценки состояния, вы знаете истинные значения состояния. Можно вычислить ошибки между предполагаемыми и истинными значениями состояния и анализировать ошибки. Предполагаемое значение состояния в любое время продвигается, значение, сохраненное в obj.State после того, как вы оцениваете состояния с помощью команды correct или predict. Ошибки оценки состояния должны удовлетворить следующие характеристики:
Маленькое значение
Нулевое среднее значение
Низкая автокорреляция, кроме в нулевой задержке
Можно также вычислить ковариацию ошибки оценки состояния и сравнить его с ошибочной ковариацией оценки состояния, сохраненной в свойстве StateCovariance фильтра. Подобные значения увеличивают уверенность в производительности фильтра.
extendedKalmanFilter | particleFilter | unscentedKalmanFilter