pruneTrackBranches

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

Синтаксис

[toPrune,globalProbability] = pruneTrackBranches(branchHistory,scores,hypotheses)
[toPrune,globalProbability] = pruneTrackBranches(branchHistory,scores,hypotheses,Name,Value)
[toPrune,globalProbability,info] = 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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