exponenta event banner

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

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

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

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

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

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

свернуть все

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

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

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

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

  • 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] Вертманн, Джон Р. «Пошаговое описание вычислительно эффективной версии отслеживания множественных гипотез». В трудах SPIE том 1698, Сигнал и обработка малых целей. 1992, стр 288–300. дои: 10.1117/12.139379.

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

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

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