После того, как вы используете 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