assignkbest

Присвоение с помощью k-best глобального самого близкого соседа

Описание

[assignments,unassignedrows,unassignedcolumns,cost] = assignkbest(costmatrix,costofnonassignment) возвращает таблицу присвоений, assignments, из обнаружений к дорожкам с помощью алгоритма Munkres. Алгоритм находит решение глобального самого близкого соседа (GNN), которое минимизирует общую стоимость присвоений.

Стоимость каждого потенциального присвоения содержится в матрице стоимости, costmatrix. Каждая матричная запись представляет стоимость возможные присвоения. Строки матрицы представляют дорожки, и столбцы представляют обнаружения. Все возможные присвоения представлены в матрице стоимости. Чем ниже стоимость, тем более вероятно присвоение должно быть сделано. Каждая дорожка может быть присвоена самое большее одному обнаружению, и каждое обнаружение может быть присвоено самое большее одной дорожке. Если количество строк больше количества столбцов, некоторые дорожки являются неприсвоенными. Если количество столбцов больше количества строк, некоторые обнаружения являются неприсвоенными. Можно установить запись costmatrix к Inf запретить присвоение.

costofnonassignment представляет стоимость оставления следов или неприсвоенных обнаружений. Более высокие значения увеличивают вероятность, что каждый существующий объект присвоен.

Все входные параметры должны все быть одинарной точностью или всеми быть двойная точность.

Функция возвращает список неприсвоенных дорожек, unassignedrows, список неприсвоенных обнаружений, unassignedcolumns, и стоимость присвоения, cost.

пример

[assignments,unassignedrows,unassignedcolumns,cost] = assignkbest(costmatrix,costofnonassignment,k)также задает номер, k, из k - лучшие глобальные самые близкие соседние решения, которые минимизируют общую стоимость присвоений. В дополнение к лучшему решению функция использует алгоритм Murty, чтобы найти остающийся k-1 решением.

[assignments,unassignedrows,unassignedcolumns,cost] = assignkbest(costmatrix,costofnonassignment,k,algorithm) также задает алгоритм, algorithm, для нахождения присвоений.

Примеры

свернуть все

Создайте матрицу стоимости, содержащую запрещенные присвоения. Затем используйте assignkbest функционируйте, чтобы найти эти 5 лучших решений.

Настройте матрицу стоимости, чтобы содержать некоторые запрещенные или недопустимые присвоения путем вставки Inf в матрицу.

costMatrix = [10 5 8 9; 7 Inf 20 Inf; Inf 21 Inf Inf; Inf 15 17 Inf; Inf inf 16 22];
costOfNonAssignment = 100;

Найдите 5 лучших присвоений.

[assignments,unassignedrows,unassignedcols,cost] = ...
    assignkbest(costMatrix,costOfNonAssignment,5)
assignments=5×1 cell
    {4x2 uint32}
    {4x2 uint32}
    {4x2 uint32}
    {4x2 uint32}
    {4x2 uint32}

unassignedrows=5×1 cell
    {[3]}
    {[3]}
    {[3]}
    {[4]}
    {[5]}

unassignedcols=5×1 cell
    {0x1 uint32}
    {0x1 uint32}
    {0x1 uint32}
    {0x1 uint32}
    {0x1 uint32}

cost = 5×1

   147
   151
   152
   153
   154

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

свернуть все

Стойте матрицы, заданной как M-by-N матрица. M является количеством дорожек, которые будут присвоены, и N является количеством обнаружений, которые будут присвоены. Каждая запись в матрице стоимости содержит стоимость присвоения обнаружения и дорожки. Матрица может содержать Inf записи, чтобы указать, что присвоение запрещается. Матрица стоимости не может быть разреженной матрицей.

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

Стоимость неприсвоения, заданного как скаляр. Стоимость неприсвоения представляет стоимость оставления следов или неприсвоенных обнаружений. Более высокие значения увеличивают вероятность, что каждый объект присвоен. Значение не может быть установлено к Inf.

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

Количество лучших решений, заданных как положительное целое число.

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

Алгоритм присвоения, заданный как 'munkres' для алгоритма Munkres, 'jv' для алгоритма Jonker-Volgenant или 'auction' для Аукционного алгоритма.

Пример: 'jv'

Типы данных: char | string

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

свернуть все

Присвоение дорожек к обнаружениям, возвращенным как k - массив ячеек элемента. k является количеством лучших решений. Каждая ячейка содержит L i-2 матрица пар индексов дорожки и присвоенных индексов обнаружения. L i - количество пар присвоения в i th ячейка решения. Первый столбец каждой матрицы содержит индексы дорожки, и второй столбец содержит присвоенные индексы обнаружения.

Индексы неприсвоенных дорожек, возвращенных как k - массив ячеек элемента. Каждой ячейкой является P, который i векторизовала, где P i = M - L i - количество неприсвоенных строк в i th ячейка. Каждый элемент является индексом строки, которой не присвоены никакие столбцы. k является количеством лучших решений.

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

Индексы неприсвоенных обнаружений, возвращенных как k - массив ячеек элемента. Каждой ячейкой является Q, который i векторизовала, где Q i = M - L i - количество неприсвоенных обнаружений в i th ячейка. Каждый элемент является индексом столбца, которому не присвоены никакие строки. k является количеством лучших решений.

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

Общая стоимость решений, возвращенных как k - вектор элемента. Каждый элемент является скалярным значением, обобщающим общую стоимость решения проблемы присвоения.

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

Ссылки

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

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

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

Смотрите также

Функции

Введенный в R2018b