После того, как вы используете 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
.
Если вы используете extendedKalmanFilter
или unscentedKalmanFilter
, можно также использовать residual
получить ошибку оценки:
[residual,residualCovariance] = residual(obj,y);
Ошибки оценки (остаточные значения) должны иметь следующие характеристики:
Маленькая величина — Небольшие ошибки относительно размера выходных параметров увеличивают доверие к ориентировочным стоимостям.
Нулевое среднее значение
Низкая автокорреляция, кроме в нулевой задержке — Чтобы вычислить автокорреляцию, можно использовать xcorr
MATLAB команда.
Когда вы симулируете выходные данные своей нелинейной системы и используете те данные в оценке состояния, вы знаете истинные значения состояния. Можно вычислить ошибки между предполагаемыми и истинными значениями состояния и анализировать ошибки. Предполагаемое значение состояния в любое время шаг является значением, сохраненным в obj.State
после того, как вы оцениваете состояния с помощью predict
или correct
команда. Ошибки оценки состояния должны удовлетворить следующим характеристикам:
Маленькая величина
Нулевое среднее значение
Низкая автокорреляция, кроме в нулевой задержке
Можно также вычислить ковариацию ошибки оценки состояния и сравнить его с ошибочной ковариацией оценки состояния, сохраненной в StateCovariance
свойство фильтра. Подобные значения увеличивают доверие к производительности фильтра.
extendedKalmanFilter
| particleFilter
| residual
| unscentedKalmanFilter