После использования extendedKalmanFilter, unscentedKalmanFilter или particleFilter команды для оперативной оценки состояния нелинейной системы, проверьте оценку перед развертыванием кода в приложении. Если проверка указывает на низкую достоверность оценки, см. следующие шаги в разделе Устранение неполадок при оценке состояния в сети. После проверки результатов оценки в режиме онлайн можно создать код C/C + + или автономное приложение с помощью программного обеспечения MATLAB ® Coder™ или MATLAB Compiler™.
Для проверки производительности фильтра выполните оценку состояния с использованием измеренных или смоделированных выходных данных из различных сценариев.
Получение выходных данных из Вашей системы при различных рабочих условиях и входных значениях - Чтобы оценка работала хорошо при всех интересующих рабочих условиях. Например, предположим, что требуется отслеживать положение и скорость транспортного средства с помощью измерений шумного положения. Измерение данных при различных скоростях транспортного средства и медленных и резких маневрах.
Для каждого рабочего условия, представляющего интерес, получить множество наборов экспериментальных или моделируемых данных с различными реализациями шума - чтобы гарантировать, что различные значения шума не ухудшают характеристики оценки.
Для каждого из этих сценариев проверьте производительность фильтра путем анализа ошибки оценки выходного сигнала и ошибки оценки состояния. Пример выполнения и проверки оценки состояния в режиме онлайн см. в разделе Оценка нелинейного состояния с использованием неописанного фильтра Калмана и фильтра частиц.
Погрешность оценки выходного сигнала представляет собой разность между измеренным выходным сигналом, yи предполагаемый результат, yEstimated. Расчетный выход можно получить на каждом временном шаге с помощью функции измерения системы. Например, если vdpMeasurementFcn.m является функцией измерения для вашей нелинейной системы, и вы выполняете оценку состояния с использованием расширенного объекта фильтра Калмана, obj, можно вычислить оценочный выходной сигнал, используя оценки текущего состояния как:
yEstimated = vdpMeasurementFcn(obj.State); estimationError = y-yEstimated;
Здесь obj.State - значение состояния − 1] после оценки состояний с помощью predict команда. − 1] - предсказанная оценка состояния для времениk, оцененный с использованием измеренного выходного сигнала до предыдущего времени k-1.
Если используется extendedKalmanFilter или unscentedKalmanFilter, вы также можете использовать residual для получения ошибки оценки:
[residual,residualCovariance] = residual(obj,y);
Ошибки оценки (остатки) должны иметь следующие характеристики:
Малая величина - небольшие ошибки относительно размера выходов повышают уверенность в оценочных значениях.
Нулевое среднее
Низкая автокорреляция, за исключением нулевого времени задержки - для вычисления автокорреляции можно использовать MATLAB xcorr команда.
При моделировании выходных данных нелинейной системы и использовании этих данных для оценки состояния известны истинные значения состояния. Можно вычислить ошибки между оцененными и истинными значениями состояния и проанализировать ошибки. Оценочное значение состояния на любом временном шаге - это значение, сохраненное в obj.State после оценки состояний с помощью predict или correct команда. Ошибки оценки состояния должны удовлетворять следующим характеристикам:
Малая звёздная величина
Нулевое среднее
Низкая автокорреляция, за исключением нулевой задержки по времени
Можно также вычислить ковариацию ошибки оценки состояния и сравнить ее с ковариацией ошибки оценки состояния, сохраненной в StateCovariance свойства фильтра. Аналогичные значения повышают надежность работы фильтра.
extendedKalmanFilter | particleFilter | residual | unscentedKalmanFilter