Статический сплав синхронных обнаружений датчика
Система staticDetectionFuser
object™ создает статический объект термофиксатора обнаружения плавить обнаружения датчика только для угла.
Получить термофиксатор:
Создайте объект staticDetectionFuser
и установите его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
fuser = staticDetectionFuser()
fuser = staticDetectionFuser(Name,Value)
создает статический объект термофиксатора обнаружения с тремя датчиками по умолчанию плавить обнаружения датчика только для угла.fuser
= staticDetectionFuser()
свойства наборов с помощью одной или нескольких пар "имя-значение". Например, fuser
= staticDetectionFuser(Name,Value
)fuser = staticDetectionFuser('FalseAlarmRate',1e-6,'MaxNumSensors',12)
создает термофиксатор, который имеет максимум 12 датчиков и ложный сигнальный уровень 1e-6
. Заключите каждое имя свойства в кавычки.
Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция release
разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).
FuserSensorIndex
— Индекс датчика составных обнаружений1
(значение по умолчанию) | положительное целое число Об индексе датчика составных обнаружений сообщает термофиксатор, заданный как положительное целое число. Этот индекс становится 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
— Максимальное количество датчиков в области наблюдения3
(значение по умолчанию) | положительное целое число, больше, чем одноМаксимальное количество датчиков в области наблюдения, заданной как положительное целое число, больше, чем одно.
Типы данных: double
Объем
Объем интервала обнаружения датчика1e-2
(значение по умолчанию) | положительная скалярная величина | N - вектор длины положительных скалярных величинОбъем интервалов обнаружения датчиков, заданных как положительная скалярная величина или N - вектор длины положительных скалярных величин. N является количеством датчиков. Если задано как скаляр, каждый датчик присвоен тот же объем. Если датчик производит измерение только для угла, например, азимут и повышение, объем задан как пространственный угол, за которым подухаживает один интервал.
Типы данных: double
DetectionProbability
— Вероятности целевого обнаружения0.9
(значение по умолчанию) | положительная скалярная величина | 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,analysisInfo] = fuser(dets)
возвращает сплавленные обнаружения, 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.