correct

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

Описание

пример

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

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

  2. measurement – Измерения датчика раньше корректировали оценку состояния

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)). Используйте 5 000 частиц.

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++ с помощью MATLAB® Coder™.

Введенный в R2016a