Термофиксатор от дорожки к дорожке одно гипотезы
trackFuser
Система object™ дорожки предохранителей, сгенерированные путем отслеживания датчиков или средств отслеживания и архитектора, децентрализовала системы слежения. trackFuser
использует алгоритм глобального самого близкого соседа (GNN), чтобы обеспечить одну гипотезу об объектах, которые он отслеживает. Входные дорожки называются source или дорожками local, и выходные дорожки называются дорожками central.
Плавить дорожки с помощью этого объекта:
Создайте trackFuser
объект и набор его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
создает термофиксатор от дорожки к дорожке, который использует алгоритм глобального самого близкого соседа (GNN), чтобы обеспечить одну гипотезу об объектах, которые он отслеживает. fuser
= trackFuser
свойства наборов для термофиксатора с помощью одной или нескольких пар "имя-значение". Незаданные свойства имеют значения по умолчанию. Заключите каждое имя свойства в одинарные кавычки.fuser
= trackFuser(Name,Value
)
Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их и release
функция разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).
FuserIndex
— Уникальный индекс для термофиксатора дорожки
(значение по умолчанию) | положительное целое числоУникальный индекс для термофиксатора, заданного как положительное целое число. Используйте это свойство отличить различные термофиксаторы в среде нескольких-термофиксаторов.
Пример 2
MaxNumSources
— Максимальное количество исходных настроек
(значение по умолчанию) | положительное целое числоМаксимальное количество исходных настроек, которые термофиксатор может обеспечить, заданный как положительное целое число.
Пример:
200
SourceConfigurations
— Настройки исходных системfuserSourceConfiguration
объекты Настройки исходных систем, заданных как массив ячеек fuserSourceConfiguration
объекты. Значением по умолчанию является 1 N массивом ячеек fuserSourceConfiguration
объекты, где N является значением MaxNumSources
свойство. Можно задать это свойство во время создания как Пара "имя-значение" или задать его после создания.
Типы данных: object
Assignment
— Алгоритм присвоения'MatchPairs'
(значение по умолчанию) | 'Munkres'
| 'Jonker-Volgenant'
| 'Auction'
| 'Custom'
Алгоритм присвоения, заданный как 'MatchPairs'
, 'Munkres'
, 'Jonker-Volgenant'
, 'Auction'
, или 'Custom'
. Munkres является единственным алгоритмом присвоения, который гарантирует оптимальное решение, но это является также самым медленным, специально для больших количеств обнаружений и дорожек. Другие алгоритмы не гарантируют оптимального решения, но могут быть быстрее для проблем с 20 или больше дорожками и обнаружениями. Use'Custom'
чтобы задать ваше собственное присвоение функционируют и задают его имя в CustomAssignmentFcn
свойство.
Типы данных: char
CustomAssignmentFcn
— Пользовательская функция присвоенияПользовательская функция присвоения, определенный функцией указатель. Функция присвоения должна иметь следующий синтаксис:
[assignments,unassignedCentral,unassignedLocal] = f(cost,costNonAssignment)
assignmunkres
.
Чтобы включить это свойство, установите Assignment
свойство к 'Custom'
.
Типы данных: function handle
| string
| char
AssignmentThreshold
— Порог присвоения от дорожки к дорожке30*[1 Inf]
(значение по умолчанию) | положительная скалярная величина | 1 2 вектор положительных значенийПорог присвоения от дорожки к дорожке, заданный как положительная скалярная величина или 1 2 вектор [C 1,C2], где C 1 ≤ C 2. Если задано как скаляр, заданное значение, val, расширено до [val, Inf
].
Первоначально, термофиксатор выполняет крупную оценку для нормированного расстояния между всеми локальными и центральными дорожками. Термофиксатор только вычисляет точное нормированное расстояние для локальных и центральных комбинаций, крупное нормированное расстояние которых меньше C 2. Кроме того, термофиксатор может только присвоить локальную дорожку центральной дорожке, если их точное нормированное расстояние меньше C 1. Смотрите distance
функция используется с отслеживанием фильтров (trackingCKF
и trackingEKF
например) для объяснения расчета расстояния.
Советы:
Увеличьте значение C 2, если существуют комбинации локальных и центральных дорожек, которые должны быть вычислены для присвоения, но не являются. Уменьшите его, если вычисление занимает слишком много времени.
Увеличьте значение C 1, если существуют локальные дорожки, которые должны быть присвоены центральным дорожкам, но не являются. Уменьшите его, если существуют локальные дорожки, которые присвоены центральным дорожкам, которым они не должны быть присвоены (слишком далеко).
StateTransitionFcn
— Функция изменения состояния'constvel'
(значение по умолчанию) | указатель на функциюФункция изменения состояния, определенный функцией указатель. Эта функция вычисляет состояние на временном шаге k на основе состояния на временном шаге k –1.
Если HasAdditiveProcessNoise
true
, функция должна использовать следующий синтаксис:
x(k) = f(x(k-1),dt)
x(k)
— (Предполагаемое) состояние во время k
, заданный как вектор или матрица. Если задано как матрица, то каждый столбец матрицы представляет один вектор состояния.
dt
— Временной шаг для прогноза.
Если HasAdditiveProcessNoise
false
, функция должна использовать этот синтаксис:
x(k) = f(x(k-1),w(k-1),dt)
x(k)
— (Предполагаемое) состояние во время k
, заданный как вектор или матрица. Если задано как матрица, то каждый столбец матрицы представляет один вектор состояния.
w(k)
— Шум процесса во время k
.
dt
— Временной шаг для прогноза.
Пример: @constacc
Типы данных: function_handle
| char
| string
StateTransitionJacobianFcn
— Якобиан функции изменения состояния''
(значение по умолчанию) | указатель на функциюЯкобиан функции изменения состояния, определенного функцией указателя. Если не заданный, якобиан численно вычисляется, который может увеличить время вычислений и числовую погрешность. Если задано, функция должна поддержать один из этих двух синтаксисов:
Если HasAdditiveProcessNoise
true
, функция должна использовать этот синтаксис:
Jx(k) = statejacobianfcn(x(k),dt)
x(k)
— (Предполагаемое) состояние во время k
, заданный как M-by-1 вектор действительных значений.
dt
— Временной шаг для прогноза.
Jx(k)
— Якобиан изменения состояния функционирует относительно состояния, df/dx
, оцененный в x(k)
. Якобиан возвращен как M-by-M матрица.
Если HasAdditiveProcessNoise
false
, функция должна использовать этот синтаксис:
[Jx(k),Jw(k)] = statejacobianfcn(x(k),w(k),dt)
x(k)
— (Предполагаемое) состояние во время k
, заданный как M-by-1 вектор действительных значений.
w(k)
— Шум процесса во время k
, заданный как W-by-1 вектор действительных значений.
dt
— Временной шаг для прогноза.
Jx(k)
— Якобиан изменения состояния функционирует относительно состояния, df/dx
, оцененный в x(k)
. Якобиан возвращен как M-by-M матрица.
Jw(k)
— Якобиан изменения состояния функционирует относительно шума процесса, df/dw
, оцененный в x(k)
и w(k)
. Якобиан возвращен как M-by-W матрица.
Пример: @constaccjac
Типы данных: function_handle
| char
| string
ProcessNoise
— Ковариация шума процессаeye(3)
(значение по умолчанию) | положительный действительный скаляр | положительная определенная матрицаКовариация шума процесса, заданная как положительный действительный скаляр или положительная определенная матрица.
Когда HasAdditiveProcessNoise
true
, задайте ковариацию шума процесса как положительный действительный скаляр или положительный определенный M-by-M матрица. M является размерностью вектора состояния. Когда задано как скаляр, матрица является кратной M-by-M единичная матрица.
Когда HasAdditiveProcessNoise
false
, задайте ковариацию шума процесса как W-by-W матрица. W является размерностью вектора шума процесса.
Пример: [1.0 0.05; 0.05 2
]
Типы данных: single
| double
HasAdditiveProcessNoise
— Шум аддитивного процесса моделиtrue
(значение по умолчанию) | false
Опция к шуму процесса модели как дополнение, заданное как true
или false
. Когда этим свойством является true
, шум процесса добавляется к вектору состояния. В противном случае шум включен в функцию изменения состояния.
StateParameters
— Параметры дорожки утверждают систему координатstruct()
(значение по умолчанию) | структура | массив структурПараметры дорожки утверждают систему координат, заданную как структура или массив структур. Используйте это свойство задать параметры о сплавленных центральных дорожках что термофиксатор дорожки выходные параметры. Например, можно использовать эти параметры, чтобы выполнить координатное преобразование от транспортного средства локальная система координат к другому транспортному средству локальная система координат или глобальная система координат.
Настраиваемый: да
Типы данных: struct
ConfirmationThreshold
— Порог для центрального подтверждения дорожки
(значение по умолчанию) | положительное целое число | 1 2 вектор положительных целых чиселПорог для центрального подтверждения дорожки, заданного как положительный целочисленный M, или 1 2 вектор положительных целых чисел [M N] с M ≤ N. Центральная дорожка подтверждена, если она присвоена локальным дорожкам, по крайней мере, времена M в последних обновлениях N. Если задано положительный целочисленный M, порог подтверждения расширен до [M, M].
Типы данных: single
| double
DeletionThreshold
— Порог для центрального удаления дорожки
(значение по умолчанию) | положительное целое число | 1 2 вектор положительных целых чиселПорог для центрального удаления дорожки, заданного как положительный целочисленный P, или 1 2 вектор положительных целых чисел [P R] с P ≤ R. Центральная дорожка удалена, если дорожка не присвоена локальным дорожкам, по крайней мере, времена P в последних обновлениях R. Если задано положительный целочисленный P, порог подтверждения расширен до [P, P].
Пример: [5 6]
Типы данных: single
| double
FuseConfirmedOnly
— Плавьте только подтвержденные локальные дорожкиtrue
(значение по умолчанию) | false
Плавьте только подтвержденные локальные дорожки, заданные как false
или true
. Установите это свойство на false
если вы хотите плавить все локальные дорожки независимо от их состояния подтверждения.
Типы данных: логический
FuseCoasted
— Предохранитель курсировал локальные дорожкиfalse
(значение по умолчанию) | true
Предохранитель курсировал локальные дорожки, заданные как true
или false
. Установите это свойство на true
если вы хотите соединиться, курсировал локальные дорожки (IsCoasted
поле или свойство localTracks
входом является true
). Установите его на false
если вы хотите только плавить локальные дорожки, которые не курсируются.
Пример: true
Типы данных: логический
StateFusion
— Алгоритм сплава состояния'Cross'
(значение по умолчанию) | 'Intersection'
| 'Custom'
Алгоритм сплава состояния, заданный как:
'Cross'
— Использует алгоритм сплава перекрестной ковариации
'Intersection'
— Использует перекрестный алгоритм сплава ковариации
'Custom'
— Позволяет вам задавать индивидуально настраиваемую функцию сплава
Используйте StateFusionParameters
свойство задать дополнительные параметры, используемые алгоритмом сплава состояния.
Типы данных: char
CustomStateFusionFcn
— Пользовательская функция сплава состояния''
(значение по умолчанию) | указатель на функциюПользовательская функция сплава состояния, определенный функцией указатель. Функция сплава состояния должна поддержать один из следующих синтаксисов:
[fusedState,fusedCov] = f(trackState,trackCov) [fusedState,fusedCov] = f(trackState,trackCov,fuseParams)
trackState
задан как N-by-M матрица. N является размерностью состояния дорожки, и M является количеством дорожек.
trackCov
задан как N-by-N-M матрица. N является размерностью состояния дорожки, и M является количеством дорожек.
fuseParams
дополнительные параметры, заданные в StateFusionParameters
свойство.
fusedState
возвращен как N-by-1 вектор.
fusedCov
возвращен как N-by-N матрица.
Чтобы включить это свойство, установите StateFusion
свойство к 'Custom'
.
Типы данных: function_handle
| char
| string
StateFusionParameters
— Параметры для функции сплава состояния[]
(значение по умолчанию)Параметры для функции сплава состояния. В зависимости от выбора StateFusion
алгоритм, можно задать StateFusionParameters
как:
Если StateFusion
'Cross'
, задайте его как скаляр в (0,1). Смотрите fusexcov
для получения дополнительной информации.
Если StateFusion
'Intersection'
, задайте его как 'det'
или 'trace'
. Смотрите fusecovint
для получения дополнительной информации.
Если StateFusion
'Custom'
, можно задать эти параметры в любом типе переменной, пока они совпадают с настройкой дополнительного fuseParams
вход пользовательской функции сплава состояния задан в CustomStateFusionFcn
свойство.
По умолчанию свойство пусто.
NumCentralTracks
— Количество дорожек центрального уровняЭто свойство доступно только для чтения.
Количество центральных дорожек в настоящее время обеспечено термофиксатором, возвращенным как неотрицательное целое число.
Типы данных: double
NumConfirmedCentralTracks
— Количество подтвержденных центральных дорожекЭто свойство доступно только для чтения.
Количество подтвержденных центральных дорожек в настоящее время обеспечено термофиксатором, возвращенным как неотрицательное целое число.
Типы данных: double
возвращает список подтвержденных дорожек из списка локальных дорожек. Подтвержденные дорожки предсказаны ко времени обновления, confirmedTracks
= fuser(localTracks
,tFusion
)tFusion
.
[
также возвращает список предварительных дорожек, список всех дорожек и информацию об анализе.confirmedTracks
,tentativeTracks
,allTracks
,analysisInformation
] = fuser(localTracks
,tFusion
)
localTracks
— Локальные дорожкиobjectTrack
объекты | массив структурЛокальные дорожки, заданные как массив objectTrack
объекты или массив структур с именами полей, которые совпадают с именами свойства objectTrack
объект. Локальные дорожки являются дорожками, сгенерированными от средств отслеживания в исходной системе транспортировки.
Типы данных: object
| struct
tFusion
— Обновите времяОбновите время, заданное как скаляр. Термофиксатор предсказывает все центральные дорожки к этому времени. Модули находятся в секундах.
Типы данных: single
| double
confirmedTracks
— Подтвержденные дорожкиobjectTrack
объекты | массив структурПодтвержденные дорожки, возвращенные как массив objectTrack
объекты в MATLAB®, и возвратились как массив структур в генерации кода. В генерации кода имена полей возвращенной структуры - то же самое с именами свойства objectTrack
.
Дорожка подтверждена, если она удовлетворяет порогу подтверждения, заданному в ConfirmationThreshold
свойство. В этом случае, IsConfirmed
свойством объекта или полем структуры является true
.
Типы данных: struct |
object
tentativeTracks
— Предварительные дорожкиobjectTrack
объекты | массив структурПредварительные дорожки, возвращенные как массив objectTrack
объекты в MATLAB, и возвратились как массив структур в генерации кода. В генерации кода имена полей возвращенной структуры - то же самое с именами свойства objectTrack
.
Дорожка является предварительной, если она не удовлетворяет порогу подтверждения, заданному в ConfirmationThreshold
свойство. В этом случае, IsConfirmed
свойством объекта или полем структуры является false
.
Типы данных: struct |
object
allTracks
— Все дорожкиobjectTrack
объекты | массив структурВсе дорожки, возвращенные как массив objectTrack
объекты в MATLAB, и возвратились как массив структур в генерации кода. В генерации кода имена полей возвращенной структуры - то же самое с именами свойства objectTrack
. Все дорожки состоят из подтвержденных и предварительных дорожек.
Типы данных: struct |
object
analysisInformation
— Дополнительная информация для анализа обновлений дорожкиДополнительная информация для анализа обновлений дорожки, возвращенных как структура. Поля этой структуры:
Поле | Описание |
TrackIDsAtStepBeginning | Отследите идентификаторы, когда шаг начался |
CostMatrix | Стоимость матрицы присвоения |
Assignments | Присвоения возвращены в функцию присвоения |
UnassignedCentralTracks | Идентификаторы неприсвоенных центральных дорожек |
UnassignedLocalTracks | Идентификаторы неприсвоенных локальных дорожек |
NonInitializingLocalTracks | Идентификаторы локальных дорожек, которые были неприсвоенными, но не использовались, чтобы инициализировать центральную дорожку |
InitiatedCentralTrackIDs | Идентификаторы центральных дорожек инициируются во время шага |
UpdatedCentralTrackIDs | Идентификаторы центральных дорожек обновляются во время шага |
DeletedTrackIDs | Идентификаторы центральных дорожек удалены во время шага |
TrackIDsAtStepEnd | Идентификаторы центральных дорожек, когда законченный шаг |
Типы данных: struct
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
trackFuser
predictTrackToTime | Предскажите состояние дорожки |
initializeTrack | Инициализируйте дорожку в термофиксаторе дорожки |
deleteTrack | Удалите дорожку, управляемую термофиксатором дорожки |
step | Запустите алгоритм Системного объекта |
release | Высвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики |
clone | Создайте объект дублированной системы |
isLocked | Определите, используется ли Системный объект |
reset | Сбросьте внутренние состояния Системного объекта |
Задайте два источника отслеживания: одно внутреннее и одно внешнее. SourceIndex
из каждого источника должно быть уникальным.
internalSource = fuserSourceConfiguration(1,'IsInternalSource',true); externalSource = fuserSourceConfiguration(2,'IsInternalSource',false);
Создайте trackFuser
с FuserIndex
равняйтесь 3. Термофиксатор берет эти два источника, заданные выше, и использует 'Cross'
StateFusion
модель.
fuser = trackFuser('FuserIndex',3, 'MaxNumSources',2, ... 'SourceConfigurations',{internalSource;externalSource}, ... 'StateFusion','Cross');
Обновите термофиксатор с двумя дорожками из этих двух источников. Используйте 3-D постоянное скоростное состояние, в котором состояния даны в порядке [x; vx; y; vy; z; vz]. Состояния двух дорожек являются тем же самым, но их ковариации отличаются. Для первой дорожки создайте большую ковариацию в оси X. Для второй дорожки создайте большую ковариацию в оси Y.
tracks = [objectTrack('SourceIndex',1,'State',[10;0;0;0;0;0], ... 'StateCovariance',diag([100,1000,1,10,1,10])); ... objectTrack('SourceIndex',2,'State',[10;0;0;0;0;0], ... 'StateCovariance',diag([1,10,100,1000,1,10]))];
Плавьте дорожку со временем сплава, равным 0.
time = 0; confirmedTracks = fuser(tracks,time);
Получите положения и ковариации положения исходных дорожек и подтвержденных дорожек.
positionSelector = [1 0 0 0 0 0; 0 0 1 0 0 0; 0 0 0 0 1 0]; % [x; y; z]
[inputPos,inputCov] = getTrackPositions(tracks,positionSelector);
[outputPos,outputCov] = getTrackPositions(confirmedTracks,positionSelector);
Визуализируйте результаты с помощью trackPlotter
.
tPlotter = theaterPlot('XLim',[0, 20],'YLim',[-10, 10],'ZLim',[-10, 10]); tPlotter1 = trackPlotter(tPlotter,'DisplayName','Input Tracks','MarkerEdgeColor','blue'); tPlotter2 = trackPlotter(tPlotter,'DisplayName','Fused Tracks','MarkerEdgeColor','green'); plotTrack(tPlotter1,inputPos,inputCov) plotTrack(tPlotter2,outputPos,outputCov) title('Cross-covariance fusion')
Указания и ограничения по применению:
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
Входные дорожки должны быть массивом структур вместо objectTrack
objectArray.
Дорожка выходные параметры (все три) является каждым массив структур вместо objectTrack
objectArray.
Структура параметра состояния для всех входных исходных дорожек должна быть в том же формате (те же имена полей и типы данных) как структура параметра состояния термофиксатора дорожки.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.