exponenta event banner

ggiwphd

PHD-фильтр гамма-гауссова инверсия Wishart (GGIW)

Описание

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

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

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

  3. Обратное распределение по Вишарту (IW) - представляет пространственную протяженность цели. В 2-м месте степень представлена случайной положительной определенной матрицей 2 на 2, которая соответствует 2-му описанию эллипса. В 3-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-на-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 - количество компонентов в плотности.

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

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

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

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

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

Упущение фактора Гамма распределения для каждого компонента, определенного как вектор ряда положительных реальных ценностей 1 на Н. 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 на Н. N - количество компонентов в плотности.

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

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

Матрица масштабирования распределения Инверсия-Вишарта для каждого компонента, заданная как массив 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 - количество компонентов в плотности. Каждый компонент может иметь только одну метку, но несколько компонентов могут совместно использовать одну метку.

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

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

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

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

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

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

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

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

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

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

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

    z(k) = measurementfcn(x(k),v(k))
    
    z(k) = measurementfcn(x(k),v(k),parameters)
    где x(k) - состояние в момент времени k и v(k) - шум измерения в момент времени k. 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 - размерность состояния. 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 относительно шума измерения. 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 фильтр с двумя 3D постоянными скоростными компонентами. Начальными состояниями двух компонентов являются [0; 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] Грансторм, К. и О. Оргунер ". PHD-фильтр для отслеживания нескольких расширенных целей с помощью случайных матриц ". Транзакции IEEE при обработке сигналов. Том 60, номер 11, 2012, стр. 5657-5671.

[2] Грансторм, К. и А. Натале, П. Брака, Г. Людено и Ф. Серафино. «Гамма-гауссова гипотеза обратной вероятности Вишарта для расширенного сопровождения цели с использованием данных морской РЛС X-диапазона». Сделки IEEE по геологии и дистанционному зондированию. Том 53, номер 12, 2015, стр. 6617-6631.

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

.
Представлен в R2019a