Получите историю ветвей поддерживаемых треков
возвращает таблицу, содержащую историю ветви дорожки, поддерживаемую входом history
= getHistory(branchHistoryMgr
)trackBranchHistory
Системные object™, branchHistoryMgr
.
возвращает историю ветвей в заданном формате: history
= getHistory(branchHistoryMgr
,format
)'table'
или 'matrix'
.
Примените результаты алгоритма назначения к ориентированному на дорожки, мультигипотезному отслеживанию (MHT) менеджеру истории ветвей. Просмотрите получившиеся ветви дорожки (гипотезы).
Создайте менеджера истории ветвей MHT, который является trackBranchHistory
Системные object™. Установите объект, чтобы сохранить историю четырех датчиков и двух сканов.
branchHistoryMgr = trackBranchHistory('MaxNumSensors',4,'MaxNumHistoryScans',2)
branchHistoryMgr = trackBranchHistory with properties: MaxNumSensors: 4 MaxNumHistoryScans: 2 MaxNumTracks: 200 MaxNumTrackBranches: 3
Обновление истории ветвей. Поскольку первое обновление не имеет предыдущих ветвей, диспетчер истории ветвей содержит только неназначенные обнаружения.
emptyAssignment = zeros(0,2,'uint32'); emptyUnassignment = zeros(0,1,'uint32'); unassignedDetections = uint32([1;2;3]); originatingSensor = [1 1 2]; history = branchHistoryMgr(emptyAssignment,emptyUnassignment, ... unassignedDetections,originatingSensor);
Просмотрите текущую историю ветвей при помощи getHistory
функция. Каждое обнаружение присваивается отдельной дорожке.
getHistory(branchHistoryMgr)
ans=3×5 table
TrackID ParentID BranchID Scan2 Scan1
Sensor1 Sensor2 Sensor3 Sensor4 Sensor1 Sensor2 Sensor3 Sensor4
_______ ________ ________ ________________________________________ ________________________________________
1 0 1 1 0 0 0 0 0 0 0
2 0 2 2 0 0 0 0 0 0 0
3 0 3 0 3 0 0 0 0 0 0
Задайте несколько назначений ветвей и несколько неназначенных ветвей дорожки и обнаружений.
Присвойте ветвь 1 обнаружениям 1 и 2.
Присвойте ветвь 2 обнаружениям 1 и 2.
Рассмотрите неназначенные ветви 1 и 3 трека.
Учитывайте обнаружения 1, 2 и 3 неназначенные.
assignments = uint32([1 1; 1 2; 2 1; 2 2]); unassignedTracks = uint32([1;3]); unassignedDetections = uint32([1;2;3]);
Обновите диспетчер истории ветвей с помощью назначений и неназначенных треков и обнаружений.
history = branchHistoryMgr(assignments,unassignedTracks, ...
unassignedDetections,originatingSensor);
Просмотр обновленной истории ветвей.
getHistory(branchHistoryMgr)
ans=9×5 table
TrackID ParentID BranchID Scan2 Scan1
Sensor1 Sensor2 Sensor3 Sensor4 Sensor1 Sensor2 Sensor3 Sensor4
_______ ________ ________ ________________________________________ ________________________________________
1 1 1 0 0 0 0 1 0 0 0
3 3 3 0 0 0 0 0 3 0 0
4 0 4 1 0 0 0 0 0 0 0
5 0 5 2 0 0 0 0 0 0 0
6 0 6 0 3 0 0 0 0 0 0
1 1 7 1 0 0 0 1 0 0 0
1 1 8 2 0 0 0 1 0 0 0
2 2 9 1 0 0 0 2 0 0 0
2 2 10 2 0 0 0 2 0 0 0
Смотрите историю ветвей.
Последний скан - Скан 2. Предыдущий скан - Скан 1, которое было Скан 2 в предыдущем обновлении назначения. История сместила один скан вправо.
Ветви 1 и 3 являются ветвями для неназначенных путей.
Ветвь 2 больше не входит в историю, поскольку она не считается неназначенной. Его назначение обнаружениям 1 и 2 создавало ветви 9 и 10.
Ветви 4-6 являются ветвями, созданными для неназначенных обнаружений.
Ветви 7-10 являются ветвями, созданными для заданий пути.
branchHistoryMgr
- Входной менеджер истории ветвейtrackBranchHistory
Системный объектВходной менеджер истории ветвей, заданный как trackBranchHistory
Системный объект.
format
- Формат истории выходных ветвей'table'
(по умолчанию) | 'matrix'
Формат истории выходных ветвей, заданный как один из следующих:
'table'
(по умолчанию) - Возвращает историю ветвей в таблицу.
'matrix'
- Возвращает историю ветвей в матрице. Этот вывод эквивалентен выходу, возвращаемому при вызове trackBranchHistory
Системный объект.
history
- История ветвиИстория ветви, возвращенная как таблица целых чисел или как матрица целых чисел.
Каждая строка history
представляет уникальную ветвь дорожки. history
имеет 3 + (D × S) столбцы, где D - количество поддерживаемых сканов (историческая глубина) и S - максимальное количество поддерживаемых датчиков. Первые три столбца представляют следующую информацию о каждой ветви дорожки:
TrackID
- идентификатор дорожки, которая связана с ветвью. Ветви дорожки, которые, как принято, произошли от одной и той же цели, имеют один и тот же идентификатор дорожки. Если ветвь происходит от неназначенного обнаружения, эта ветвь получает новый идентификатор дорожки.
ParentID
- идентификатор родительской ветви, то есть ветви, от которой произошла текущая ветвь. Ветви, созданные из одного родительского элемента, имеют одинаковые ParentID
. A ParentID
0 указывает на новую дорожку. Эти дорожки создаются из гипотез, соответствующих неназначенным обнаружениям.
BranchID
- Уникальный идентификатор ветви пути. Каждая ветвь, созданная в результате неназначенного обнаружения или назначения, получает новый идентификатор ветви.
Остальные D × S столбцы содержат идентификаторы обнаружений, назначенных каждой ветви. Ветвь может быть назначена, самое большее, одному обнаружению на скан и на датчик. Таблица показывает организацию этих столбцов с выборочными обнаружениями. N - количество сканов. Значение 0
означает, что датчик на этом скане не имеет назначенного ему обнаружения.
Сканы N | Скан N - 1 | . . . | Скан N - D | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Датчик - 1 | Датчик - 2 | . . . | Датчик - S | Датчик - 1 | Датчик - 2 | . . . | Датчик - S | . . . | Датчик - 1 | Датчик - 2 | . . . | Датчик - S |
|
| ... |
|
|
| ... |
| ... |
|
| ... |
|
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.