Статический сплав синхронных обнаружений датчика
staticDetectionFuser
Система object™ создает статический объект термофиксатора обнаружения плавить обнаружения датчика только для угла.
Получить термофиксатор:
Создайте staticDetectionFuser
объект и набор его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
создает статический объект термофиксатора обнаружения с тремя датчиками по умолчанию плавить обнаружения датчика только для угла.fuser
= staticDetectionFuser()
свойства наборов с помощью одной или нескольких пар "имя-значение". Например, fuser
= staticDetectionFuser(Name,Value
)fuser = staticDetectionFuser('FalseAlarmRate',1e-6,'MaxNumSensors',12)
создает термофиксатор, который имеет максимум 12 датчиков и ложный сигнальный уровень 1e-6
. Заключите каждое имя свойства в кавычки.
Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их и release
функция разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).
FuserSensorIndex
— Индекс датчика составных обнаружений
(значение по умолчанию) | положительное целое число Об индексе датчика составных обнаружений сообщает термофиксатор, заданный как положительное целое число. Этот индекс становится SensorIndex
из objectDetection
объекты возвращены термофиксатором.
Пример 5
Типы данных: double
MeasurementFusionFcn
— Функция для плавления нескольких обнаружений датчика'triangulateLOS'
(значение по умолчанию) | char | представляет в виде строки | указатель на функциюФункция для плавления нескольких обнаружений датчика, заданных как вектор символов, строка или указатель на функцию. Функция плавит несколько обнаружений в одно и возвращает сплавленный шум измерения и измерения. Любая функция плавления комбинирует самое большее одно обнаружение от каждого датчика. Синтаксис функции термофиксатора измерения:
[fusedMeasurement,fusedMeasurementNoise] = MeasurementFusionFcn(detections)
detections
– массив ячеек objectDetection
измерения.
fusedMeasurement
– N-by-1 вектор сплавленных измерений.
fusedMeasurementNoise
– N-by-N матрица сплавленного шума измерений.
Значение N зависит от MeasurementFormat
свойство.
Свойство MeasurementFormat | N |
'Position' | 1, 2, и 3 |
'Velocity | 1, 2, и 3 |
'PositionAndVelocity | 2, 4, и 6 |
'Custom' | Любой |
Типы данных: char |
string
| function_handle
MeasurementFormat
— Формат сплавленного измерения'Position'
(значение по умолчанию) | 'Velocity'
| 'PositionAndVelocity'
| 'Custom'
Формат сплавленного измерения, заданного как 'Position'
, 'Velocity'
, 'PositionAndVelocity'
, или 'Custom'
. Форматы
'Position'
– сплавленное измерение является положением цели в системе координат глобальной координаты.
'Velocity'
– сплавленное измерение является скоростью цели в системе координат глобальной координаты.
'PositionAndVelocity'
– сплавленное измерение является положением и скоростью цели в системе координат глобальной координаты, заданной согласно формату [x;vx;y;vy;z;vz]
.
'Custom'
– пользовательское сплавленное измерение. Чтобы включить этот формат, задайте функцию с помощью MeasurementFcn
.
Пример: 'PositionAndVelocity'
MeasurementFcn
— Пользовательская функция измеренияПользовательская функция измерения, заданная как вектор символов, строка или указатель на функцию. Задайте функцию, которая преобразовывает сплавленные измерения в измерения датчика. Функция должна иметь следующую подпись:
sensorMeas = MeasurementFcn(fusedMeas,measParameters)
Чтобы включить это свойство, установите MeasurementFormat
свойство к 'Custom'
.
Типы данных: char |
string
| function_handle
MaxNumSensors
— Максимальное количество датчиков в области наблюдения
(значение по умолчанию) | положительное целое число, больше, чем одноМаксимальное количество датчиков в области наблюдения, заданной как положительное целое число, больше, чем одно.
Типы данных: double
Volume
— Объем интервала обнаружения датчика1e-2
(значение по умолчанию) | положительная скалярная величина | N - вектор длины положительных скалярных величинОбъем интервалов обнаружения датчиков, заданных как положительная скалярная величина или N - вектор длины положительных скалярных величин. N является количеством датчиков. Если задано как скаляр, каждый датчик присвоен тот же объем. Если датчик производит измерение только для угла, например, азимут и вертикальное изменение, объем задан как пространственный угол, за которым подухаживает один интервал.
Типы данных: double
DetectionProbability
— Вероятности целевого обнаружения
(значение по умолчанию) | положительная скалярная величина | N - вектор длины положительных скалярных величинВероятность обнаружения цели каждым датчиком, заданным как скаляр или N - вектор длины положительных скалярных величин в области значений (0,1). N является количеством датчиков. Если задано как скаляр, каждый датчик определен та же вероятность обнаружения. Вероятность обнаружения используется в вычислении стоимости плавления "одного" (цель была обнаружена), или "нуль" (цель не была обнаружена), обнаружения от каждого датчика.
Пример: 0.99
Типы данных: double
FalseAlarmRate
— Уровень ложных положительных сторон сгенерирован датчиками1e-6
(значение по умолчанию) | положительная скалярная величина | N - вектор длины положительных скалярных величинУровень, на котором о ложных положительных сторонах сообщает датчик в каждом интервале, задал как скаляр или N - вектор длины положительных скалярных величин. N является количеством датчиков. Если задано как скаляр, каждый датчик присвоен тот же ложный сигнальный уровень. Ложный сигнальный уровень используется, чтобы вычислить вероятность помехи в обнаружениях, о которых сообщает каждый датчик.
Пример: 1e-5
Типы данных: double
UseParallel
— Опция, чтобы использовать ресурсы параллельных вычисленийfalse
(значение по умолчанию) | true
Опция, чтобы использовать ресурсы параллельных вычислений, заданные как false
или true
. staticDetectionFuser
вычисляет стоимость соединяющихся обнаружений от каждого датчика как n-D проблема присвоения. Термофиксатор тратит наиболее часто в вычислении матрицы стоимости для проблемы присвоения. Если Parallel Computing Toolbox™ установлен, эта опция позволяет термофиксатору использовать параллельный пул рабочих, чтобы вычислить матрицу стоимости.
Типы данных: логический
TimeTolerance
— Абсолютный допуск между метками времени обнаружений1e-6
(значение по умолчанию) | неотрицательный скалярАбсолютный допуск между метками времени обнаружений, заданных как неотрицательный скаляр. staticDetectionFuser
принимает, что датчики синхронны. Это свойство задает позволенное значение допуска между метками времени обнаружения, которые все еще будут рассмотрены синхронным.
Пример: 1e-3
Типы данных: double
возвращает сплавленные обнаружения, compositeDets
= fuser(dets
)compositeDets
, из входных обнаружений, dets
.
[
также возвращает информацию об анализе, compositeDets
,analysisInfo
] = fuser(dets
)analysisInfo
.
dets
— Предварительно сплавленные обнаруженияobjectDetection
объектыПредварительно сплавленные обнаружения, заданные как массив ячеек objectDetection
объекты.
compositeDets
— Сплавленные обнаруженияobjectDetection
объектыПредварительно сплавленные обнаружения, возвращенные как массив ячеек objectDetection
объекты.
analysisInfo
— Информация об анализеИнформация об анализе, возвращенная как структура. Поля структуры:
CostMatrix
– N - размерная матрица стоимости, предоставляющая стоимость ассоциации обнаружений, где N является количеством датчиков. Стоимость является отрицательной логарифмической правдоподобностью ассоциации и может быть интерпретирована как отрицательный счет дорожки, которая будет сгенерирована сплавленным измерением.
Assignments
– P-by-N список присвоений, где P является количеством составных обнаружений.
FalseAlarms
– Q-by-1 список индексов обнаружений, объявленных как ложь, предупреждает по ассоциации.
Типы данных: struct
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
Плавьте обнаружения только для угла от трех датчиков ESM.
Загрузите сохраненные обнаружения от датчиков.
load('angleOnlyDetectionFusion.mat','detections');
Визуализируйте обнаружения только для угла для графического вывода вектора направления.
rPlot = 5000; plotData = zeros(3,numel(detections)*3); for i = 1:numel(detections) az = detections{i}.Measurement(1); el = detections{i}.Measurement(2); [xt,yt,zt] = sph2cart(deg2rad(az),deg2rad(el),rPlot); % The sensor is co-located at platform center, therefore use % the position from the second measurement parameter originPos = detections{i}.MeasurementParameters(2).OriginPosition; positionData(:,i) = originPos(:); plotData(:,3*i-2) = [xt;yt;zt] + originPos(:); plotData(:,3*i-1) = originPos(:); plotData(:,3*i) = [NaN;NaN;NaN]; end plot3(plotData(1,:),plotData(2,:),plotData(3,:),'r-') hold on plot3(positionData(1,:),positionData(2,:),positionData(3,:),'o','MarkerSize',12,'MarkerFaceColor','g')
Создайте staticDetectionFuser
чтобы плавить обнаружения только для угла с помощью сплава измерения функционируют triangulateLOS
.
fuser = staticDetectionFuser('MeasurementFusionFcn','triangulateLOS','MaxNumSensors',3)
fuser = staticDetectionFuser with properties: FusedSensorIndex: 1 MeasurementFusionFcn: 'triangulateLOS' MeasurementFormat: 'Position' MaxNumSensors: 3 Volume: [3x1 double] DetectionProbability: [3x1 double] FalseAlarmRate: [3x1 double] TimeTolerance: 1.0000e-06 UseParallel: false
Создайте сплавленные обнаружения и получите информацию об анализе.
[fusedDetections, analysisInfo] = fuser(detections); fusedPositions = zeros(3,numel(fusedDetections)); for i = 1:numel(fusedDetections) fusedPositions(:,i) = fusedDetections{i}.Measurement; end plot3(fusedPositions(1,:),fusedPositions(2,:),fusedPositions(3,:),'ko', ... 'MarkerSize',12, 'MarkerFaceColor','k') legend('Angle-only Detections','Sensor Positions','Fused Target Measurements') title('Angle-only Detection Fusion') xlabel('x [m]') ylabel('y [m]') view(2)
Используйте analysisInfo выход, чтобы проверять присвоения.
analysisInfo.Assignments
ans = 6x3 uint32 matrix
0 10 14
1 6 11
2 7 12
3 8 13
4 9 0
5 0 15
Статический термофиксатор обнаружения:
Вычисляет стоимость плавления или соответствия с обнаружениями от каждого датчика друг до друга.
Решает 2D или S-D проблема присвоения, где S является количеством датчиков, чтобы сопоставить или совпадать с обнаружениями от одного датчика до других.
Плавит ковариацию измерения и измерения связанных n-кортежей обнаружения, чтобы сгенерировать список составного объекта или сплавленных обнаружений.
Объявляет неприсвоенные обнаружения от каждого датчика как ложные предупреждения.
staticDetectionFuser
принимает, что все датчики синхронны и генерируют обнаружения одновременно. staticDetectionFuser
также принимает, что датчики совместно используют общую область наблюдения. Соединение обнаружений n от датчиков m указывает на m - n пропустил обнаружения или ложные предупреждения.
Указания и ограничения по применению:
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.