clusterTrackBranches

История многогипотез, ориентированных на дорожки кластеров

Описание

пример

[clusters,incompatibleBranches] = clusterTrackBranches(branchHistory) вычисляет кластеры и матрицу несовместимости для набора ветвей.

Ветви i, j и k относятся к одному кластеру, если ветви i и j попарно-несовместимы, а ветви j и k попарно-несовместимы. Две ветви попарно-несовместимы, если они имеют общий идентификатор дорожки (первый столбец branchHistory) или если они делятся обнаружениями, которые попадают в их ворота во время количества последних сканов, заданных глубиной истории.

[clusters,incompatibleBranches] = clusterTrackBranches(branchHistory,'OutputForm',out) возвращает кластеры в формате, заданном out.

Примеры

свернуть все

Создайте матрицу истории ветвей для 12 ветвей. В данном примере матрица истории ветвей имеет 11 столбцов, которые представляют историю 2 датчиков с глубиной истории 4.

branchHistory = uint32([     
    4     9     9     0     0     1     0     0     0     0     0
    5    10    10     0     0     0     2     0     0     0     0
    6    11    11     0     0     3     0     0     0     0     0
    1    12    12     0     0     1     0     1     0     0     0
    1    13    13     0     0     0     2     1     0     0     0
    1    14    14     0     0     1     2     1     0     0     0
    2    15    15     0     0     3     0     3     0     0     0
    3    16    16     0     0     0     4     0     4     0     0
    7     0    17     1     0     0     0     0     0     0     0
    1     5    18     1     0     0     0     0     2     0     0
    1     5    19     0     2     0     0     0     2     0     0
    1     5    20     1     2     0     0     0     2     0     0]);

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

[clusters,incompBranches] = clusterTrackBranches(branchHistory);
size(clusters)
ans = 1×2

    12     3

Показать несовместимые ветви как график. Числовые идентификаторы ветвей находятся в третьем столбце branchHistory. Чтобы отобразить идентификаторы ветвей на графике, преобразуйте идентификаторы в векторы символов. Можно увидеть три различных кластера.

branchIDs = cellstr(num2str(branchHistory(:,3)));
g = graph(incompBranches,branchIDs,'omitselfloops');
plot(g)

Figure contains an axes. The axes contains an object of type graphplot.

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

свернуть все

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

Выход возвращенного clusters, заданный как 'logical', 'vector', или 'cell'.

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

свернуть все

Кластеры, возвращенные как один из следующих. Формат clusters определяется out.

  • Логическая матрица M P -by. M - количество ветвей (строк) в branchHistory и P количество кластеров. Элемент (i, j) true если j ветви содержится в кластерных i. Значение P меньше или равно M.

  • Вектор длины M, где i-й элемент задает индекс кластера, который содержит i ветви.

  • Массив ячеек c, где c{j} содержит идентификаторы всех ветвей в j кластера.

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

Несовместимые ветви, возвращенные как M -by M симметричная логическая матрица. Элемент (i, j) true если ветви i и j попарно-несовместимы.

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

Ссылки

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

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

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