initcapf

Создайте постоянный ускоряющий фильтр частиц отслеживания из отчета обнаружения

Синтаксис

pf = initcapf(detection)

Описание

пример

pf = initcapf(detection) инициализирует постоянный ускоряющий фильтр частиц для отслеживания объекта на основе информации, предоставленной в объекте класса objectDetection, detection.

Примеры

свернуть все

Создайте постоянное ускорение, отслеживающее объект фильтра частиц, trackingPF, из первоначального отчета обнаружения. Отчет обнаружения сделан из начального 3-D измерения положения состояния фильтра частиц в прямоугольных координатах. Можно получить 3-D измерение положения с помощью постоянной ускоряющей функции измерения, cameas.

Этот пример использует координаты, x = 1, y = 3, z = 0 и 3-D шум измерения положения [1 0.2 0; 0.2 2 0; 0 0 1].

detection = objectDetection(0, [1;3;0], 'MeasurementNoise', [1 0.2 0; 0.2 2 0; 0 0 1]);

Используйте initcapf, чтобы создать фильтр trackingPF, инициализированный в обеспеченном положении и использовании шума измерения, заданного выше.

pf = initcapf(detection)
pf = 
  trackingPF with properties:

                       State: [9⨯1 double]
             StateCovariance: [9⨯9 double]
     IsStateVariableCircular: [0 0 0 0 0 0 0 0 0]

          StateTransitionFcn: @constacc
     ProcessNoiseSamplingFcn: []
                ProcessNoise: [3x3 double]
     HasAdditiveProcessNoise: 0

              MeasurementFcn: @cameas
    MeasurementLikelihoodFcn: []
            MeasurementNoise: [3x3 double]

                   Particles: [9x1000 double]
                     Weights: [1x1000 double]
            ResamplingPolicy: [1x1 trackingResamplingPolicy]
            ResamplingMethod: 'multinomial'

Проверяйте значения состояния и шума измерения. Проверьте, что состояние фильтра, pf.State, имеет приблизительно те же компоненты положения как измерение обнаружения, detection.Measurement.

pf.State
ans = 9×1

    0.9857
   -0.2361
   -0.0030
    3.0097
    0.4079
    0.0214
    0.0460
   -0.2209
   -0.5646

Проверьте, что шум измерения фильтра, pf.MeasurementNoise, совпадает со значениями detection.MeasurementNoise.

pf.MeasurementNoise
ans = 3×3

    1.0000    0.2000         0
    0.2000    2.0000         0
         0         0    1.0000

Создайте постоянное ускорение, отслеживающее объект фильтра частиц, trackingPF, из первоначального отчета обнаружения. Отчет обнаружения сделан из начального 3-D измерения положения состояния фильтра частиц в сферических координатах. Можно получить 3-D измерение положения с помощью постоянной ускоряющей функции измерения, cameas.

Этот пример использует координаты, az = 30, e1 = 5, r = 100, rr = 4 и шум измерения diag([2.5, 2.5, 0.5, 1].^2).

meas = [30;5;100;4];
measNoise = diag([2.5, 2.5, 0.5, 1].^2);

Используйте свойство MeasurementParameters объекта detection задать кадр. Если не заданный, поля struct MeasurementParameters используют значения по умолчанию. В этом примере положение датчика, скорость датчика, ориентация, повышение и флаги уровня области значений являются значением по умолчанию.

measParams = struct('Frame','spherical');
detection = objectDetection(0,meas,'MeasurementNoise',measNoise,...
    'MeasurementParameters',measParams) 
detection = 
  objectDetection with properties:

                     Time: 0
              Measurement: [4x1 double]
         MeasurementNoise: [4x4 double]
              SensorIndex: 1
            ObjectClassID: 0
    MeasurementParameters: [1x1 struct]
         ObjectAttributes: {}

Используйте initcapf, чтобы создать фильтр trackingPF, инициализированный в обеспеченном положении и использовании шума измерения, заданного выше.

pf = initcapf(detection)
pf = 
  trackingPF with properties:

                       State: [9⨯1 double]
             StateCovariance: [9⨯9 double]
     IsStateVariableCircular: [0 0 0 0 0 0 0 0 0]

          StateTransitionFcn: @constacc
     ProcessNoiseSamplingFcn: []
                ProcessNoise: [3x3 double]
     HasAdditiveProcessNoise: 0

              MeasurementFcn: @cameas
    MeasurementLikelihoodFcn: []
            MeasurementNoise: [4x4 double]

                   Particles: [9x1000 double]
                     Weights: [1x1000 double]
            ResamplingPolicy: [1x1 trackingResamplingPolicy]
            ResamplingMethod: 'multinomial'

Проверьте, что состояние фильтра производит приблизительно то же измерение как detection.Measurement.

meas2 = cameas(pf.State, detection.MeasurementParameters)
meas2 = 4×1

   29.9188
    5.0976
   99.8303
    4.0255

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

свернуть все

Отчет обнаружения, заданный как объект Object Detections.

Пример: detection = objectDetection(0,[1;4.5;3],'MeasurementNoise', [1.0 0 0; 0 2.0 0; 0 0 1.5])

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

свернуть все

Постоянный ускоряющий фильтр частиц для объектного отслеживания, возвращенного как объект trackingPF.

Алгоритмы

  • Функция конфигурирует фильтр с 1 000 частиц. В создании фильтра функция вычисляет матрицу шума процесса, принимающую модульное стандартное отклонение для ускоряющего уровня изменения.

  • Можно использовать эту функцию в качестве свойства FilterInitializationFcn Системных объектов trackerGNN и trackerTOMHT.

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

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

Смотрите также

Функции

Классы

Системные объекты

Введенный в R2018b