Проверьте оценку состояния в командной строке

После того, как вы используете extendedKalmanFilter, unscentedKalmanFilter или particleFilter команды для онлайн-оценки состояния нелинейной системы, проверьте оценку перед развертыванием кода в вашем приложении. Если валидация указывает на низкое доверие оценки, смотрите Поиск и устранение проблем с оценкой состояния в Интернете для следующих шагов. После того, как вы подтвердили результаты онлайн-оценки, можно сгенерировать код C/C + + или автономное приложение с помощью MATLAB® Coder™ или MATLAB Compiler™ программное обеспечение.

Чтобы подтвердить эффективность вашего фильтра, выполните оценку состояния с помощью измеренных или моделируемых выходных данных из различных сценариев.

  • Получение выходных данных от вашей системы при различных рабочих условиях и исходных значениях - для обеспечения того, чтобы оценка работала хорошо при всех рабочих условиях, представляющих интерес. Например, предположим, что вы хотите отследить положение и скорость транспортного средства с помощью шумных измерений положения. Измерьте данные на разных скоростях транспортного средства и медленных и резких маневрах.

  • Для каждого интересующего условия работы получайте несколько наборов экспериментальных или моделируемых данных с различными реализациями шума - Чтобы гарантировать, что различные значения шума не ухудшают эффективность оценки.

Для каждого из этих сценариев проверяйте эффективность фильтра путем исследования выходной ошибки расчета и ошибки расчета состояния. Для примера о выполнении и проверке оценки состояния в режиме онлайн, смотрите нелинейную оценку состояния с использованием сигма-точечного фильтра Калмана и фильтра частиц.

Исследуйте ошибку расчета выхода

Ошибка расчета является различием между измеренным выходом, yи предполагаемый выход, yEstimated. Можно получить предполагаемый выход на каждом временном шаге с помощью функции измерения системы. Для примера, если vdpMeasurementFcn.m является функцией измерения для вашей нелинейной системы, и вы выполняете оценку состояния с помощью расширенного объекта фильтра Калмана, obj, можно вычислить предполагаемый выход, используя оценки текущего состояния как:

yEstimated = vdpMeasurementFcn(obj.State);
estimationError = y-yEstimated;

Вот obj.State - значение состояния x^[k|k1] после того, как вы оцените состояния используя predict команда. x^[k|k1] - предсказанная оценка состояния для времени k, оцененный с использованием измеренного выхода до предыдущего временного k-1.

Если вы используете extendedKalmanFilter или unscentedKalmanFilter, вы также можете использовать residual для получения ошибки расчета:

[residual,residualCovariance] = residual(obj,y);

Ошибки расчета ( невязки) должна иметь следующие характеристики:

  • Малая величина - малые ошибки относительно размера выходов повышают доверие в оцененных значениях.

  • Нулевое среднее

  • Низкая автокорреляция, кроме нулевой временной задержки - для вычисления автокорреляции можно использовать MATLAB xcorr команда.

Исследуйте ошибку расчета состояния для моделируемых данных

Когда вы моделируете выходные данные вашей нелинейной системы и используете эти данные для оценки состояния, вы знаете истинные значения состояния. Можно вычислить ошибки между оцененными и истинными значениями состояния и проанализировать ошибки. Оцененное значение состояния в любой временной шаг является значением, сохраненным в obj.State после того, как вы оцените состояния используя predict или correct команда. Ошибки расчета состояния должны удовлетворять следующим характеристикам:

  • Малая величина

  • Нулевое среднее

  • Низкая автокорреляция, кроме нулевой временной задержки

Можно также вычислить ковариацию ошибки расчета состояния и сравнить ее с ковариацией ошибки расчета состояния, сохраненной в StateCovariance свойство фильтра. Аналогичные значения повышают доверие в эффективности фильтра.

См. также

| | |

Похожие темы