exponenta event banner

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

После использования 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 'k − 1] после оценки состояний с помощью predict команда. x ^ [k 'k − 1] - предсказанная оценка состояния для времениk, оцененный с использованием измеренного выходного сигнала до предыдущего времени k-1.

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

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

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

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

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

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

Проверка ошибки оценки состояния для моделируемых данных

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

  • Малая звёздная величина

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

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

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

См. также

| | |

Связанные темы