ggiwphd

Гамма-Гауссов Обратный Фильтр Wishart (GGIW) PHD

Описание

The ggiwphd объект является фильтром, который реализует плотность гипотезы вероятностей (PHD), используя смесь компонентов Гамма-Гауссова Обратного-Вишарта. Реализация GGIW фильтра PHD обычно используется для отслеживания расширенных объектов. Расширенный объект может выдавать несколько обнаружений на датчик, и фильтр GGIW использует модель случайной матрицы, чтобы принять во внимание пространственное распределение этих обнаружений. Фильтр состоит из трех распределений, чтобы представлять состояние расширенного объекта.

  1. Гауссово распределение - представляет кинематическое состояние расширенного объекта.

  2. Гамма- распределение - представляет ожидаемое количество обнаружений на датчике от расширенного объекта.

  3. Обратное-Wishart (IW) распределение - представляет пространственную степень цели. В 2-D пространстве экстент представлен случайной положительно определенной матрицей 2 на 2, которая соответствует 2-D описанию эллипса. В трехмерном пространстве экстент представлен случайной матрицей 3 на 3, которая соответствует 3-D эллипсоидному описанию. Плотность вероятностей этих случайных матриц задается как распределение Обратного Желания.

Для получения дополнительной информации о ggiwphd, см. [1] и [2].

Примечание

ggiwphd объект несовместим с trackerGNN, trackerJPDA, и trackerTOMHT системные объекты.

Создание

Описание

PHD = ggiwphd создает ggiwphd фильтр со значениями свойств по умолчанию.

PHD = ggiwphd(States,StateCovariances) позволяет вам задать States и StateCovariances Гауссова распределения для каждого компонента в плотности. States и StateCovariances задать свойства тех же имен.

пример

phd = ggiwphd(States,StateCovariances,Name,Value) также позволяет вам задать свойства для фильтра, используя одну или несколько пары "имя-значение". Заключайте каждое имя свойства в кавычки.

Свойства

расширить все

Состояние каждого компонента в фильтре, заданное как P -by - N матрица, где P - размерность состояния, а N - количество компонентов. Каждый столбец матрицы соответствует состоянию каждого компонента. Значение по умолчанию для States является матрицей 6 на 2, в которой элементы первого столбца все 0, а элементы второго столбца все 1.

Типы данных: single | double

Ковариация ошибки оценки состояния каждого компонента в фильтре, заданная как P -by P -by - N массив, где P - размерность состояния, а N - количество компонентов. Каждая страница (P -by - P матрица) массива соответствует ковариационной матрице каждого компонента. Значение по умолчанию для StateCovariances массив 6 на 6 на 2, в котором каждая страница (матрица 6 на 6) является матрицей тождеств.

Типы данных: single | double

Индексы координат положения в состоянии, заданные как вектор-строка положительных целых чисел. Например, по умолчанию состояние определяется как [x; vx; y; vy; z; vz], и соответствующий индекс положения [1 3 5] представление координат x -, y - и z - положения.

Пример: [1 2 3]

Типы данных: single | double

Функция перехода состояния, заданная как указатель на функцию. Эта функция вычисляет вектор состояния на временной шаг k из вектора состояния на временной шаг k-1. Функция может также включать значения шума.

  • Если HasAdditiveProcessNoise является true, задайте функцию, используя один из следующих синтаксисов:

    x(k) = transitionfcn(x(k-1))
    
    x(k) = transitionfcn(x(k-1),dT)
    где x(k) - оценка состояния во время k, и dT - временной шаг.

  • Если HasAdditiveProcessNoise является false, задайте функцию, используя один из следующих синтаксисов:

    x(k) = transitionfcn(x(k-1),w(k-1))
    
    x(k) = transitionfcn(x(k-1),w(k-1),dT)
    где x(k) - оценка состояния во время k, w(k) - технологический шум во время k, и dT - временной шаг.

Пример: @constacc

Типы данных: function_handle

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

  • Если HasAdditiveProcessNoise является true, задайте якобианскую функцию, используя один из следующих синтаксисов:

    Jx(k) = statejacobianfcn(x(k))
    
    Jx(k) = statejacobianfcn(x(k),dT)
    где x(k) состояние в момент времени k, dT является временным шагом и Jx(k) обозначает якобиан функции перехода состояния относительно состояния. Якобиан является M -by - M матрицей во время k, где M - размерность состояния.

  • Если HasAdditiveProcessNoise является false, задайте якобианскую функцию, используя один из следующих синтаксисов:

    [Jx(k),Jw(k)] = statejacobianfcn(x(k),w(k))
    
    [Jx(k),Jw(k)] = statejacobianfcn(x(k),w(k),dT)
    где w(k) является Q элементом технологического шума в момент времени k. Q - размерность технологического шума. В отличие от случая аддитивного технологического шума, вектор технологического шума в случае неаддитивного шума не должен иметь такие же размерности, как вектор состояния.

    Jw(k) обозначает M -by Q Якобиан предсказанного состояния относительно элементов технологического шума, где M - размерность состояния.

Если не задано, якобианы вычисляются числовым дифференцированием при каждом вызове predict функция. Этот расчет может увеличить время вычислений и числовую неточность.

Пример: @constaccjac

Типы данных: function_handle

Ковариация технологического шума:

  • Когда HasAdditiveProcessNoise является true, задайте ковариацию шума процесса как скаляр или положительно определенную матрицу M -by - M. M - размерность вектора состояний. Если задан как скаляр, матрица является произведением единичной матрицы M -by M.

  • Когда HasAdditiveProcessNoise является false, задайте ковариацию шума процесса как Q -by - Q матрицу. Q - размер вектора шума процесса. Вы должны задать ProcessNoise перед любым вызовом predict функция объекта.

Пример: [1.0 0.05; 0.05 2]

Опция для моделирования процессов шума как аддитива, заданная как true или false. Когда это свойство true, технологический шум добавляется к вектору состояния. В противном случае шум включается в функцию перехода состояния.

Пример: true

Формирующий параметр Гамма-распределения для каждого компонента, заданный как 1-байтовый N вектор-строка положительных вещественных значений. N - количество компонентов в плотности.

Пример: [1.0 0.95 2]

Типы данных: single | double

Скоростной параметр Гамма-распределения для каждого компонента, заданный как 1-байтовый N вектор-строка положительных вещественных значений. N - количество компонентов в плотности.

Пример: [1.2 0.85 1.5]

Типы данных: single | double

Коэффициент забывания Гамма-распределения для каждого компонента, заданный как вектор 1 байт N строки положительных вещественных значений. N - количество компонентов в плотности. Во время предсказания для каждого компонента параметры распределения Гаммы, форма (α) и скорость (β), разделяются n коэффициента забывания:

ak+1||k=αknkβk+1|k=βknk

где k и k + 1 представляют два последовательных временных шагов. Среднее (E) и отклонение (Var) значения гамма- распределения :

E=αβVar=αβ2

Поэтому действие деления будет сохранять ожидаемую скорость измерения постоянной, но увеличивать отклонение распределения Гаммы экспоненциально со временем, если n коэффициента забывания больше 1.

Пример: [1.2 1.1 1.4]

Типы данных: single | double

Параметр степеней свободы Обратного-Wishart распределения для каждого компонента, заданный как вектор 1-by N строки положительных вещественных значений. N - количество компонентов в плотности.

Пример: [55.2 31.1 20.4]

Типы данных: single | double

Матрица шкалы Обратного-Wishart распределения для каждого компонента, заданная как d -by- d -by- N массив положительных вещественных значений. d - размерность пространства (для примера d = 2 для 2-D пространства), а N - количество компонентов в плотности. Значение по умолчанию для ScaleMatrices массив 3 на 3 на 2, где каждая страница (матрица 3 на 3) массива 100*eye(3).

Пример: 20*eye(3,3,4)

Типы данных: single | double

Функция перехода поворота экстента цели, заданная как указатель на функцию. Функция позволяет предсказать поворот степени цели, когда скорость вращения объекта оценивается в векторе состояния. Чтобы определить свою собственную функцию вращения экстента, следуйте синтаксису, заданному

R = myRotationFcn(x,dT)

где x является состоянием компонента, dT является временным шагом и R - соответствующая матрица поворота. Обратите внимание, что R возвращается как матрица 2 на 2, если экстент 2-D, и матрица 3 на 3, если экстент 3-D. Степень на следующем шаге задается как

Ex(t+dT)=R×Ex(t)×RT

где Ex (t) - степень во время t.

Пример: @myRotationFcn

Типы данных: function_handle

Коэффициент временного распада распределения IW, заданный как положительная скалярная величина. Можно использовать это свойство для управления неопределенностью степени (отклонение распределения IW) во время предсказания. Чем меньше TemporalDecay Значение есть, тем быстрее отклонение распределительных увеличений IW.

Пример: 120

Типы данных: single | double

Метка каждого компонента в смеси, заданная как 1-байтовый N вектор-строка неотрицательных целых чисел. N - количество компонентов в плотности. Каждый компонент может иметь только одну метку, но несколько компонентов могут совместно использовать одну и ту же метку .

Пример: [1 2 3]

Типы данных: single | double

Вес каждого компонента в плотности, заданный как вектор 1-by N строка положительных вещественных значений. N - количество компонентов в плотности. Веса приведены в последовательности, как показано на labels свойство.

Пример: [1.1 0.82 1.1]

Типы данных: single | double

Обнаружения, заданные как K - массив ячеек objectDetection объекты, где K количество обнаружений. Можно создавать обнаружения непосредственно, или можно получить обнаружения с выходов объектов, таких как radarSensor, monostaticRadarSensor, irSensor, и sonarSensor.

Типы данных: single | double

Функция модели измерения, заданная как указатель на функцию. Эта функция задает переход от состояния к измерению. Вход функции является вектором состояния P-element. Выходы - M вектор измерения -элемент. Функция может принимать дополнительные входные параметры, такие как положение датчика и ориентация.

  • Если HasAdditiveMeasurementNoise является true, задайте функцию, используя один из следующих синтаксисов:

    z(k) = measurementfcn(x(k))
    
    z(k) = measurementfcn(x(k),parameters)
    где x(k) состояние в момент времени k и z(k) - соответствующее измерение. The parameters аргумент обозначает все дополнительные аргументы, требуемые функцией измерения.

  • Если HasAdditiveMeasurementNoise является false, задайте функцию, используя один из следующих синтаксисов:

    z(k) = measurementfcn(x(k),v(k))
    
    z(k) = measurementfcn(x(k),v(k),parameters)
    где x(k) состояние в момент времени k и v(k) - измерение шум в момент времени k. The parameters аргумент обозначает все дополнительные аргументы, требуемые функцией измерения.

Пример: @cameas

Типы данных: function_handle

Якобиан функции измерения, заданный как указатель на функцию. Функция имеет те же входные параметры, что и функция измерения. Функция может взять дополнительные входные параметры, такие как положение датчика и ориентация.

  • Если HasAdditiveMeasurmentNoise является true, задайте якобианскую функцию, используя один из следующих синтаксисов:

    Jmx(k) = measjacobianfcn(x(k))
    
    Jmx(k) = measjacobianfcn(x(k),parameters)
    где x(k) состояние в момент времени k. Jmx(k) обозначает M -by P якобиан функции измерения относительно состояния. M - размерность измерения, а P - размерность состояния. The parameters аргумент обозначает все аргументы, требуемые функцией измерения.

  • Если HasAdditiveMeasurmentNoise является false, задайте якобианскую функцию, используя один из следующих синтаксисов:

    [Jmx(k),Jmv(k)] = measjacobianfcn(x(k),v(k))
    
    [Jmx(k),Jmv(k)] = measjacobianfcn(x(k),v(k),parameters)
    где x(k) состояние в момент времени k и v(k) является R -мерным вектором дискретизации шума. Jmx(k) обозначает M -by P якобианскую матрицу функции измерения относительно состояния. Jmv(k) обозначает якобиан функции M -by R измерения относительно шума измерения. The parameters аргумент обозначает все аргументы, требуемые функцией измерения.

Если не задано, якобианы измерения вычисляются с помощью численного дифференцирования при каждом вызове correct функция. Этот расчет может увеличить время вычислений и числовую неточность.

Пример: @cameasjac

Типы данных: function_handle

Опция для моделирования шума измерения как аддитива, заданная как true или false. Когда это свойство true, измерительный шум добавляется к вектору состояния. В противном случае шум включается в функцию измерения.

Пример: true

Максимальное количество обнаружений ggiwphd фильтр может принимать значение входа, заданное как положительное целое число.

Пример: 50

Типы данных: single | double

Максимальное количество компонентов в ggiwphd может поддерживать фильтр, заданный как положительное целое число.

Типы данных: single | double

Функции объекта

appendДобавьте два phd фильтровать объекты
correctПравильное phd фильтр с обнаружениями
correctUndetectedПравильное phd фильтр без гипотезы обнаружения
extractStateИзвлеките оценки целевого состояния из phd фильтр
labeledDensityХраните компоненты с заданным идентификатором метки
likelihoodЛогарифмическая правдоподобность связи между камерами обнаружения и компонентами в плотности
mergeОбъедините компоненты в плотности phd фильтр
predictПредсказать гипотезу вероятности плотности phd-фильтра
pruneОбрезать фильтр путем удаления выбранных компонентов
scaleВеса шкалы компонентов в плотности
cloneСоздание повторяющихся phd объект фильтра

Примеры

свернуть все

Создание ggiwphd фильтр с двумя 3-D компонентами постоянной скорости. Начальными состояниями двух компонентов являются [0; 0; 0; 0; 0] и [1; 0; 1; 0; 1; 0], соответственно. Оба этих компонентов имеют ковариацию положения, равную 1, и ковариацию скорости, равную 100. По умолчанию ggiwphd создает 3-D матрицу экстента для каждого компонента.

states = [zeros(6,1),[1;0;1;0;1;0]];
cov1 = diag([1 100 1 100 1 100]);
covariances = cat(3,cov1,cov1);

phd = ggiwphd(states,covariances,'StateTransitionFcn',@constvel,...
             'StateTransitionJacobianFcn',@constveljac,...
             'MeasurementFcn',@cvmeas,'MeasurementJacobianFcn',@cvmeasjac,...
             'ProcessNoise',eye(3),'HasAdditiveProcessNoise',false,...
             'PositionIndex',[1;3;5]);

Указание сведений о расширении.

dofs = [21 30];
scaleMatrix1 = 13*diag([4.7 1.8 1.4].^2);
scaleMatrix2 = 22*diag([1.8 4.7 1.4].^2); 
scaleMatrices = cat(3,scaleMatrix1,scaleMatrix2);
phd.DegreesOfFreedom = dofs;
phd.ScaleMatrices = scaleMatrices;
phd.ExtentRotationFcn = @(x,dT)eye(3); % No rotation during prediction

Спрогнозируйте фильтр на 0,1 секунды вперед.

predict(phd,0.1);

Задайте обнаружения на 0.1 секунде. Фильтр получает 10 обнаружений при текущем скане.

detections = cell(10,1);
rng(2018); % Reproducible results
for i = 1:10
   detections{i} = objectDetection(0.1,randi([0 1]) + randn(3,1));
end
phd.Detections = detections;

Выберите две камеры обнаружения и вычислите их правдоподобие.

detectionIDs = false(10,2);
detectionIDs([1 3 5 7 9],1) = true;
detectionIDs([2 4 6 8 10],2) = true;
lhood = likelihood(phd,detectionIDs)
lhood = 2×2

    1.5575   -0.3183
    0.1513   -0.7616

Исправьте фильтр с помощью двух камер обнаружения и связанных вероятностей.

correct(phd,detectionIDs, exp(lhood)./sum(exp(lhood),1));
phd
phd = 
  ggiwphd with properties:

                         States: [6x4 double]
               StateCovariances: [6x6x4 double]
                  PositionIndex: [3x1 double]
             StateTransitionFcn: @constvel
     StateTransitionJacobianFcn: @constveljac
                   ProcessNoise: [3x3 double]
        HasAdditiveProcessNoise: 0

                         Shapes: [6 6 6 6]
                          Rates: [2 2 2 2]
         GammaForgettingFactors: [1 1 1 1]

               DegreesOfFreedom: [25.9870 34.9780 25.9870 34.9780]
                  ScaleMatrices: [3x3x4 double]
              ExtentRotationFcn: @(x,dT)eye(3)
                  TemporalDecay: 100

                        Weights: [0.8032 0.1968 0.6090 0.3910]
                         Labels: [0 0 0 0]

                     Detections: {1x10 cell}
                 MeasurementFcn: @cvmeas
         MeasurementJacobianFcn: @cvmeasjac
    HasAdditiveMeasurementNoise: 1

Объедините компоненты в фильтре.

merge(phd,5);
phd
phd = 
  ggiwphd with properties:

                         States: [6x2 double]
               StateCovariances: [6x6x2 double]
                  PositionIndex: [3x1 double]
             StateTransitionFcn: @constvel
     StateTransitionJacobianFcn: @constveljac
                   ProcessNoise: [3x3 double]
        HasAdditiveProcessNoise: 0

                         Shapes: [6 6.0000]
                          Rates: [2 2]
         GammaForgettingFactors: [1 1]

               DegreesOfFreedom: [25.9870 34.9780]
                  ScaleMatrices: [3x3x2 double]
              ExtentRotationFcn: @(x,dT)eye(3)
                  TemporalDecay: 100

                        Weights: [1.4122 0.5878]
                         Labels: [0 0]

                     Detections: {1x10 cell}
                 MeasurementFcn: @cvmeas
         MeasurementJacobianFcn: @cvmeasjac
    HasAdditiveMeasurementNoise: 1

Извлеките оценки и обнаружения состояний.

targetStates = extractState(phd,0.5);
tStates = targetStates.State
tStates = 6×1

    0.1947
    0.9733
    0.8319
    4.1599
   -0.0124
   -0.0621

    
d = [detections{:}];
measurements = [d.Measurement];

Визуализация результатов.

figure()
plot3(measurements(1,:),measurements(2,:),measurements(3,:),'x','MarkerSize',10,'MarkerEdgeColor','b');
hold on;
plot3( tStates(1,:),tStates(3,:),tStates(5,:),'ro');
xlabel('x')
ylabel('y')
zlabel('z')
legend('Detections','Components')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Detections, Components.

Ссылки

[1] Granstorm, K., and O. Orguner ". PHD-фильтр для слежения за несколькими расширенными целями с помощью случайных матриц ". Транзакции IEEE по обработке сигналов. Том 60, № 11, 2012, стр. 5657-5671.

[2] Granstorm, K., and A. Natale, P. Braca, G. Ludeno, and F. Serafino. «Гамма Гауссов обратный Wishart гипотезы вероятности плотности для расширенного отслеживания цели с использованием морских радиолокационных данных X-диапазона». Транзакции IEEE по геологии и дистанционному зондированию. Том 53, № 12, 2015, стр. 6617-6631.

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

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