correct

Скорректируйте оценку состояния на основе измерения датчика

Описание

пример

[stateCorr,stateCov] = correct(pf,measurement) вычисляет исправленное состояние системы и связанную с ним ковариацию неопределенности на основе датчика measurement на текущем временном шаге. correct использует MeasurementLikelihoodFcn свойство от объекта фильтра частиц, pf, как функцию для вычисления вероятности измерения датчика для каждой частицы. Два входа в MeasurementLikelihoodFcn функции:

  1. pf - The stateEstimatorPF объект, который содержит частицы текущей итерации

  2. measurement - Измерения датчика, используемые для коррекции оценки состояния

The MeasurementLikelihoodFcn затем функция извлекает лучшую оценку состояния и ковариацию на основе настройки в StateEstimationMethod свойство.

[stateCorr,stateCov] = correct(pf,measurement,varargin) передает все дополнительные аргументы в varargin к базовому MeasurementLikelihoodFcn после первых трёх необходимых входов.

Примеры

свернуть все

Создайте stateEstimatorPF объект и выполните шаг предсказания и коррекции для оценки состояния. Фильтр частиц дает предсказанную оценку состояния, основанную на возврате значении StateTransitionFcn. Затем он корректирует состояние на основе заданного измерения и возвращаемого значения MeasurementLikelihoodFcn.

Создайте фильтр частиц с тремя состояниями по умолчанию.

pf = stateEstimatorPF
pf = 
  stateEstimatorPF with properties:

           NumStateVariables: 3
                NumParticles: 1000
          StateTransitionFcn: @nav.algs.gaussianMotion
    MeasurementLikelihoodFcn: @nav.algs.fullStateMeasurement
     IsStateVariableCircular: [0 0 0]
            ResamplingPolicy: [1x1 resamplingPolicyPF]
            ResamplingMethod: 'multinomial'
       StateEstimationMethod: 'mean'
            StateOrientation: 'row'
                   Particles: [1000x3 double]
                     Weights: [1000x1 double]
                       State: 'Use the getStateEstimate function to see the value.'
             StateCovariance: 'Use the getStateEstimate function to see the value.'

Укажите метод оценки среднего состояния и метод систематической повторной дискретизации.

pf.StateEstimationMethod = 'mean';
pf.ResamplingMethod = 'systematic';

Инициализируйте фильтр частиц в состоянии [4 1 9] с единичной ковариацией (eye(3)). Используйте 5000 частицы.

initialize(pf,5000,[4 1 9],eye(3));

Принимая измерение [4,2 0,9 9], запустите один предсказание и один правильный шаг.

[statePredicted,stateCov] = predict(pf);
[stateCorrected,stateCov] = correct(pf,[4.2 0.9 9]);

Получите лучшую оценку состояния на основе StateEstimationMethod алгоритм.

stateEst = getStateEstimate(pf)
stateEst = 1×3

    4.1562    0.9185    9.0202

Входные параметры

свернуть все

stateEstimatorPF объект, заданный как указатель. См. stateEstimatorPF для получения дополнительной информации.

Измерения датчика, заданные как массив. Этот вход передается непосредственно в MeasurementLikelihoodFcn свойство pf. Он используется, чтобы вычислить вероятность измерения датчика для каждой частицы.

Список входных параметров переменной длины, заданный как список, разделенный запятыми. Этот вход передается непосредственно в MeasurementLikelihoodFcn свойство pf. Он используется, чтобы вычислить вероятность измерения датчика для каждой частицы. Когда вы звоните:

correct(pf,measurement,arg1,arg2)
MATLAB® по существу вызывает measurementLikelihoodFcn как:
measurementLikelihoodFcn(pf,measurement,arg1,arg2)

Выходные аргументы

свернуть все

Исправлено состояние системы, возвращен как вектор-строка с длиной NumStateVariables. Исправленное состояние вычисляется на основе StateEstimationMethod алгоритм и MeasurementLikelihoodFcn.

Скорректированное системное отклонение, возвращенная как N -by - N матрица, где N - значение NumStateVariables свойство от pf. Исправленное состояние вычисляется на основе StateEstimationMethod алгоритм и MeasurementLikelihoodFcn. Если вы задаете метод оценки состояния, который не поддерживает ковариацию, то функция возвращается stateCov как [].

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2016a