pruneTrackBranches

Обрезать ветви дорожки с низкой вероятностью

Описание

пример

[toPrune,globalProbability] = pruneTrackBranches(branchHistory,scores,hypotheses) возвращает логический флаг, toPrune, что указывает, какие ветви должны быть сокращены на основе истории ветви, счетов ветвей и гипотез. pruneTrackBranches также возвращает глобальные вероятности ветви, globalProbability.

[toPrune,globalProbability] = pruneTrackBranches(branchHistory,scores,hypotheses,Name,Value) использует пары "имя-значение", чтобы изменить способ обрезки ветвей.

[toPrune,globalProbability,info] = pruneTrackBranches(___) возвращает дополнительную информацию, info, о обрезанных ветвях.

Примеры

свернуть все

Создайте матрицу истории ветвей для одного датчика с 20 ветвями. В данном примере глубина истории равняется 4, поэтому матрица имеет 7 столбцов.

history = [     
   8    14    14     0     0     2     0
   1    23    23     0     0     2     1
   2    24    24     0     0     1     2
   9    25    25     0     1     0     0
  10    26    26     0     2     0     0
   1    28    28     0     1     0     1
   4    33    33     0     1     2     1
   1    34    34     0     1     2     1
   2    35    35     0     2     1     2
  11     0    36     1     0     0     0
  12     0    37     2     0     0     0
   8    14    38     2     0     2     0
   1    23    39     2     0     2     1
   2    24    40     1     0     1     2
   9    25    41     2     1     0     0
  10    26    42     1     2     0     0
   1    28    43     2     1     0     1
   4    33    44     2     1     2     1
   1    34    45     2     1     2     1
   2    35    46     1     2     1     2];

Получите список кластеров и список несовместимых ветвей. The clusters матрица имеет два столбца, поэтому существует два кластера.

[clusters,incompBranches] = clusterTrackBranches(history);

Задайте вектор-столбец 20 на 1, содержащие счета ветви.

scores = [4.5 44.9 47.4 6.8 6.8 43.5 50.5 61.9 64.7 9.1 9.1 19 61.7 ...
    63.5 21.2 20.5 60.7 67.3 79.2 81.5]';

Получите матрицу гипотез.

hypotheses = compatibleTrackBranches(clusters,incompBranches,scores,10);

Обрезайте ветви дорожки, используя аргументы пары "имя-значение", чтобы задать один датчик и 'Hypothesis' способ обрезки N-образного сканирования. Верните флаг обрезки, глобальную вероятность и информацию о обрезке каждой ветви. Чтобы упростить сравнение информации, преобразуйте информацию из struct в таблицу.

I-е значение toPrune является true если любой из 'PrunedByProbabilityPrunedByNScan', или' PrunedByNumBranches'являются true в i-й строке информационной таблицы.

[toPrune,probs,info] = pruneTrackBranches(history,scores,hypotheses, ...
    'NumSensors',1,'NScanPruning','Hypothesis');
infoTable = struct2table(info)
infoTable=20×6 table
    BranchID    PriorProbability    GlobalProbability    PrunedByProbability    PrunedByNScan    PrunedByNumBranches
    ________    ________________    _________________    ___________________    _____________    ___________________

       14           0.98901             0.098901                false               false               false       
       23                 1                  0.1                false               false               true        
       24                 1                  0.1                false               false               true        
       25           0.99889             0.099889                false               false               false       
       26           0.99889             0.099889                false               false               false       
       28                 1                    0                true                true                false       
       33                 1                    0                true                false               false       
       34                 1                  0.2                false               false               false       
       35                 1                  0.2                false               false               false       
       36           0.99989              0.19998                false               false               false       
       37           0.99989              0.19998                false               false               false       
       38                 1                    0                true                false               false       
       39                 1                  0.1                false               false               false       
       40                 1                  0.1                false               false               false       
       41                 1                  0.1                false               false               false       
       42                 1                  0.1                false               false               false       
      ⋮

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

свернуть все

История ветви, заданная как матрица целых чисел. Каждая строка branchHistory представляет уникальную ветвь дорожки. branchHistory должно иметь 3 + (D × S) столбцы, где D - количество поддерживаемых сканов (историческая глубина) и S - максимальное количество поддерживаемых датчиков. Для получения дополнительной информации смотрите history выход trackBranchHistory системный объект.

Счета ветви, заданные как M -by 1 числовой вектор или M -by 2 числовая матрица.

Примечание

Если вы задаете scores в качестве M -by 2 числовой матрицы, затем в первом столбце указывается текущий счет каждой ветви, а во втором - максимальный счет. pruneTrackBranches игнорирует второй столбец.

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

Гипотезы, возвращенные как M -by H логическая матрица, где M - количество ветвей и H - количество глобальных гипотез. Вы можете использоватьclusterTrackBranches чтобы вычислить кластеры из матрицы истории ветвей, используйте compatibleTrackBranches для вычисления гипотез из кластеров.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: [toPrune,probs] = pruneTrackBranches(branchHistory,scores,hypotheses,'MinBranchProbability',2e-3);

Минимальный порог вероятности ветви, заданный как разделенная разделенными запятой парами, состоящая из 'MinBranchProbability' и число в области значений [0,1). Типичные значения находятся между 1e-3 и 5e-3. The pruneTrackBranches функция обрезает ветви с глобальной вероятностью меньше порога.

Максимальное количество ветвей для каждого трека, заданное как разделенная разделенными запятой парами, состоящая из 'MaxNumTrackBranches' и положительное целое число. Типичные значения находятся между 2 и 6. Если у дорожки больше этого количества ветвей, то pruneTrackBrances обрезает ветви с наименьшим начальным счетом.

Метод обрезки N-сканирования, заданный как разделенная разделенными запятой парами, состоящая из 'NScanPruning' и 'None' или 'Hypothesis'. Если вы задаете 'Hypothesis', затем pruneTrackBrances обрезает ветви, которые несовместимы с текущей наиболее вероятной ветвью в самых последних < reservedrangesplaceholder1 > сканах. По умолчанию pruneTrackBrances не использует обрезку N-сканирования.

Количество датчиков в истории, заданное как разделенная разделенными запятой парами, состоящая из 'NumSensors' и положительное целое число.

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

свернуть все

Ветви для обрезки, возвращенные как M -by 1 логический вектор. Значение true указывает, что ветвь должна быть обрезана.

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

Глобальные вероятности ветви, возвращенные как M -by 1 числовой вектор.

Обрезка информации о каждой ветви, возвращаемая как struct со следующими полями.

  • BranchID - M -by 1 числовой вектор. Каждое значение задает идентификатор ветви дорожки. Идентификаторы получены из третьего столбца branchHistory.

  • PriorProbability - M -by 1 числовой вектор. Каждое значение задает предыдущую вероятность ветви из счета ветви.

  • GlobalProbability - M -by 1 числовой вектор. Каждое значение задает глобальную вероятность ветви, которая рассматривает гипотезы, которые содержат ветвь и их счета.

  • PrunedByProbability - M -by 1 логический вектор. Значение true указывает, что ветвь обрезается по MinBranchProbability.

  • PrunedByNScan - M -by 1 логический вектор. Значение true указывает, что ветвь обрезается по NScanPruning.

  • PrunedByNumBranches - M -by 1 логический вектор. Значение true указывает, что ветвь обрезается по MaxNumTrackBranches.

Ссылки

[1] Werthmann, John R. «Пошаговое описание вычислительно эффективной версии отслеживания нескольких гипотез». В трудах SPIE Vol. 1698, Сигнал и обработка малых целей. 1992, стр 288–300. doi: 10.1117/12.139379.

[2] Блэкман, Сэмюэль и Роберт Пополи. «Проект и анализ современных систем слежения». Дом Артека, 1999.

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

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

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