staticDetectionFuser

Статический сплав синхронных обнаружений датчика

Описание

Система staticDetectionFuser object™ создает статический объект термофиксатора обнаружения плавить обнаружения датчика только для угла.

Получить термофиксатор:

  1. Создайте объект staticDetectionFuser и установите его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? 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).

Об индексе датчика составных обнаружений сообщает термофиксатор, заданный как положительное целое число. Этот индекс становится SensorIndex объектов objectDetection, возвращенных термофиксатором.

Пример 5

Типы данных: double

Функция для плавления нескольких обнаружений датчика, заданных как вектор символов, строка или указатель на функцию. Функция плавит несколько обнаружений в одно и возвращает сплавленный шум измерения и измерения. Любая функция плавления комбинирует самое большее одно обнаружение от каждого датчика. Синтаксис функции термофиксатора измерения:

[fusedMeasurement,fusedMeasurementNoise] = MeasurementFusionFcn(detections)
где аргументы функций ввода и вывода

  • detections – массив ячеек измерений objectDetection.

  • fusedMeasurementN-by-1 вектор сплавленных измерений.

  • fusedMeasurementNoiseN-by-N матрица сплавленного шума измерений.

Значение N зависит от свойства MeasurementFormat.

Свойство MeasurementFormatN
'Position'1, 2, и 3
'Velocity1, 2, и 3
'PositionAndVelocity2, 4, и 6
'Custom'Любой

Типы данных: char | string | function_handle

Формат сплавленного измерения, заданного как 'Position', 'Velocity', 'PositionAndVelocity' или 'Custom'. Форматы

  • 'Position' – сплавленное измерение является положением цели в кадре глобальной координаты.

  • 'Velocity' – сплавленное измерение является скоростью цели в кадре глобальной координаты.

  • 'PositionAndVelocity' – сплавленное измерение является положением и скоростью цели в кадре глобальной координаты, заданном согласно формату [x;vx;y;vy;z;vz].

  • 'Custom' – пользовательское сплавленное измерение. Чтобы включить этот формат, задайте функцию с помощью MeasurementFcn.

Пример: 'PositionAndVelocity'

Пользовательская функция измерения, заданная как вектор символов, строка или указатель на функцию. Задайте функцию, которая преобразовывает сплавленные измерения в измерения датчика. Функция должна иметь следующую подпись:

sensorMeas = MeasurementFcn(fusedMeas,measParameters)

Зависимости

Чтобы включить это свойство, установите свойство MeasurementFormat на 'Custom'.

Типы данных: char | string | function_handle

Максимальное количество датчиков в области наблюдения, заданной как положительное целое число, больше, чем одно.

Типы данных: double

Объем интервалов обнаружения датчиков, заданных как положительная скалярная величина или N - вектор длины положительных скалярных величин. N является количеством датчиков. Если задано как скаляр, каждый датчик присвоен тот же объем. Если датчик производит измерение только для угла, например, азимут и повышение, объем задан как пространственный угол, за которым подухаживает один интервал.

Типы данных: double

Вероятность обнаружения цели каждым датчиком, заданным как скаляр или N - вектор длины положительных скалярных величин в области значений (0,1). N является количеством датчиков. Если задано как скаляр, каждый датчик присвоен та же вероятность обнаружения. Вероятность обнаружения используется в вычислении стоимости плавления "одного" (цель была обнаружена), или "нуль" (цель не была обнаружена), обнаружения от каждого датчика.

Пример: 0.99

Типы данных: double

Уровень, на котором о ложных положительных сторонах сообщает датчик в каждом интервале, задал как скаляр или N - вектор длины положительных скалярных величин. N является количеством датчиков. Если задано как скаляр, каждый датчик присвоен тот же ложный сигнальный уровень. Ложный сигнальный уровень используется, чтобы вычислить вероятность помехи в обнаружениях, о которых сообщает каждый датчик.

Пример: 1e-5

Типы данных: double

Опция, чтобы использовать ресурсы параллельных вычислений, заданные как false или true. staticDetectionFuser вычисляет стоимость соединяющихся обнаружений от каждого датчика как n-D проблема присвоения. Термофиксатор тратит наиболее часто в вычислении матрицы стоимости для проблемы присвоения. Если Parallel Computing Toolbox™ установлен, эта опция позволяет термофиксатору использовать параллельный пул рабочих, чтобы вычислить матрицу стоимости.

Типы данных: логический

Абсолютный допуск между метками времени обнаружений, заданных как неотрицательный скаляр. staticDetectionFuser принимает, что датчики синхронны. Это свойство задает позволенное значение допуска между метками времени обнаружения, которые все еще будут рассмотрены синхронным.

Пример: 1e-3

Типы данных: double

Использование

Синтаксис

compositeDets = fuser(dets)
[compositeDets,analysisInfo] = fuser(dets)

Описание

compositeDets = fuser(dets) возвращает сплавленные обнаружения, compositeDets, входных обнаружений, dets.

[compositeDets,analysisInfo] = fuser(dets) также возвращает информацию об анализе, analysisInfo.

Входные параметры

развернуть все

Предварительно сплавленные обнаружения, заданные как массив ячеек объектов objectDetection.

Выходные аргументы

развернуть все

Предварительно сплавленные обнаружения, возвращенные как массив ячеек объектов objectDetection.

Информация об анализе, возвращенная как структура. Поля структуры:

  • CostMatrixN - размерная матрица стоимости, предоставляющая стоимость ассоциации обнаружений, где N является количеством датчиков. Стоимость является отрицательной логарифмической вероятностью ассоциации и может быть интерпретирована как отрицательный счет дорожки, которая будет сгенерирована сплавленным измерением.

  • AssignmentsP-by-N список присвоений, где P является количеством составных обнаружений.

  • FalseAlarmsQ-by-1 список индексов обнаружений, объявленных как ложь, предупреждает по ассоциации.

Типы данных: struct

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

развернуть все

releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта
isLockedОпределите, используется ли Системный объект
cloneСоздайте объект дублированной системы

Примеры

развернуть все

Плавьте обнаружения только для угла от трех датчиков 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

Алгоритмы

развернуть все

Расширенные возможности

Смотрите также

Функции

Объекты

Системные объекты

Введенный в R2018b