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];

Получите список кластеров и список несовместимых ветвей. 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-th значение toPrune true если любой 'PrunedByProbability', 'PrunedByNScan', или 'PrunedByNumBranches'true в i-th строке информационной таблицы.

[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. pruneTrackBranches функционируйте ветви чернослива с глобальной вероятностью меньше, чем порог.

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

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

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

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

свернуть все

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

Типы данных: логический

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

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

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

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

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

  • PrunedByProbabilityM-by-1 логический вектор. Значение true указывает, что ветвь сокращена MinBranchProbability.

  • PrunedByNScanM-by-1 логический вектор. Значение true указывает, что ветвь сокращена NScanPruning.

  • PrunedByNumBranchesM-by-1 логический вектор. Значение true указывает, что ветвь сокращена MaxNumTrackBranches.

Ссылки

[1] Вертманн, Джон Р. "Постепенное Описание В вычислительном отношении Эффективной Версии Нескольких Отслеживание Гипотезы". В Продолжениях Издания 1698 SPIE, Сигнала и Обработки Маленьких Целей. 1992, стр 288–300. doi: 10.1117/12.139379.

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

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

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

Введенный в R2018b