После того, как вы используете extendedKalmanFilter
, unscentedKalmanFilter
или particleFilter
команды для онлайн-оценки состояния нелинейной системы, проверьте оценку перед развертыванием кода в вашем приложении. Если валидация указывает на низкое доверие оценки, смотрите Поиск и устранение проблем с оценкой состояния в Интернете для следующих шагов. После того, как вы подтвердили результаты онлайн-оценки, можно сгенерировать код C/C + + или автономное приложение с помощью MATLAB® Coder™ или MATLAB Compiler™ программное обеспечение.
Чтобы подтвердить эффективность вашего фильтра, выполните оценку состояния с помощью измеренных или моделируемых выходных данных из различных сценариев.
Получение выходных данных от вашей системы при различных рабочих условиях и исходных значениях - для обеспечения того, чтобы оценка работала хорошо при всех рабочих условиях, представляющих интерес. Например, предположим, что вы хотите отследить положение и скорость транспортного средства с помощью шумных измерений положения. Измерьте данные на разных скоростях транспортного средства и медленных и резких маневрах.
Для каждого интересующего условия работы получайте несколько наборов экспериментальных или моделируемых данных с различными реализациями шума - Чтобы гарантировать, что различные значения шума не ухудшают эффективность оценки.
Для каждого из этих сценариев проверяйте эффективность фильтра путем исследования выходной ошибки расчета и ошибки расчета состояния. Для примера о выполнении и проверке оценки состояния в режиме онлайн, смотрите нелинейную оценку состояния с использованием сигма-точечного фильтра Калмана и фильтра частиц.
Ошибка расчета является различием между измеренным выходом, 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);
Ошибки расчета ( невязки) должна иметь следующие характеристики:
Малая величина - малые ошибки относительно размера выходов повышают доверие в оцененных значениях.
Нулевое среднее
Низкая автокорреляция, кроме нулевой временной задержки - для вычисления автокорреляции можно использовать MATLAB xcorr
команда.
Когда вы моделируете выходные данные вашей нелинейной системы и используете эти данные для оценки состояния, вы знаете истинные значения состояния. Можно вычислить ошибки между оцененными и истинными значениями состояния и проанализировать ошибки. Оцененное значение состояния в любой временной шаг является значением, сохраненным в obj.State
после того, как вы оцените состояния используя predict
или correct
команда. Ошибки расчета состояния должны удовлетворять следующим характеристикам:
Малая величина
Нулевое среднее
Низкая автокорреляция, кроме нулевой временной задержки
Можно также вычислить ковариацию ошибки расчета состояния и сравнить ее с ковариацией ошибки расчета состояния, сохраненной в StateCovariance
свойство фильтра. Аналогичные значения повышают доверие в эффективности фильтра.
extendedKalmanFilter
| particleFilter
| residual
| unscentedKalmanFilter