Обрезать ветви дорожки с низкой вероятностью
[ возвращает логический флаг, 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];
Получите список кластеров и список несовместимых ветвей. The 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-е значение toPrune является true если любой из 'PrunedByProbabilityPrunedByNScan', или' 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 представляет уникальную ветвь дорожки. branchHistory должно иметь 3 + (D × S) столбцы, где D - количество поддерживаемых сканов (историческая глубина) и S - максимальное количество поддерживаемых датчиков. Для получения дополнительной информации смотрите history выход trackBranchHistory системный объект.
scores - счета ветвиСчета ветви, заданные как M -by 1 числовой вектор или M -by 2 числовая матрица.
Примечание
Если вы задаете scores в качестве M -by 2 числовой матрицы, затем в первом столбце указывается текущий счет каждой ветви, а во втором - максимальный счет. pruneTrackBranches игнорирует второй столбец.
Типы данных: single | double
hypotheses - ГипотезыГипотезы, возвращенные как 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' - Минимальная вероятность ветви1e-3 (по умолчанию) | число в области значений [0,1)Минимальный порог вероятности ветви, заданный как разделенная разделенными запятой парами, состоящая из 'MinBranchProbability' и число в области значений [0,1). Типичные значения находятся между 1e-3 и 5e-3. The pruneTrackBranches функция обрезает ветви с глобальной вероятностью меньше порога.
'MaxNumTrackBranches' - Максимальное количество ветвей3 (по умолчанию) | положительное целое числоМаксимальное количество ветвей для каждого трека, заданное как разделенная разделенными запятой парами, состоящая из 'MaxNumTrackBranches' и положительное целое число. Типичные значения находятся между 2 и 6. Если у дорожки больше этого количества ветвей, то pruneTrackBrances обрезает ветви с наименьшим начальным счетом.
'NScanPruning' - Метод обрезки N-сканирования'None' (по умолчанию) | 'Hypothesis'Метод обрезки N-сканирования, заданный как разделенная разделенными запятой парами, состоящая из 'NScanPruning' и 'None' или 'Hypothesis'. Если вы задаете 'Hypothesis', затем pruneTrackBrances обрезает ветви, которые несовместимы с текущей наиболее вероятной ветвью в самых последних < reservedrangesplaceholder1 > сканах. По умолчанию pruneTrackBrances не использует обрезку N-сканирования.
'NumSensors' - Количество датчиков20 (по умолчанию) | положительное целое числоКоличество датчиков в истории, заданное как разделенная разделенными запятой парами, состоящая из 'NumSensors' и положительное целое число.
toPrune - Ветви для обрезкиВетви для обрезки, возвращенные как M -by 1 логический вектор. Значение true указывает, что ветвь должна быть обрезана.
Типы данных: logical
globalProbability - Глобальные вероятности ветвиГлобальные вероятности ветви, возвращенные как M -by 1 числовой вектор.
info - Информация о обрезкеОбрезка информации о каждой ветви, возвращаемая как struct со следующими полями.
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] Werthmann, John R. «Пошаговое описание вычислительно эффективной версии отслеживания нескольких гипотез». В трудах SPIE Vol. 1698, Сигнал и обработка малых целей. 1992, стр 288–300. doi: 10.1117/12.139379.
[2] Блэкман, Сэмюэль и Роберт Пополи. «Проект и анализ современных систем слежения». Дом Артека, 1999.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.