staticDetectionFuser

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

Описание

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

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

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?.

Создание

Описание

fuser = staticDetectionFuser() создает статический объект термофиксатора обнаружения с тремя датчиками по умолчанию плавить обнаружения датчика только для угла.

пример

fuser = staticDetectionFuser(Name,Value) свойства наборов с помощью одной или нескольких пар "имя-значение". Например, fuser = staticDetectionFuser('FalseAlarmRate',1e-6,'MaxNumSensors',12) создает термофиксатор, который имеет максимум 12 датчиков и ложный сигнальный уровень 1e-6. Заключите каждое имя свойства в кавычки.

Свойства

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

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

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в 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, из входных обнаружений, 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

Алгоритмы

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

Ссылки

[1] Панель шалом, Яаков, Питер К. Виллетт и Синь Тянь. Отслеживание и сплав данных. Сторрз, CT, США:: публикация YBS, 2011.

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

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

Функции

Объекты

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

Введенный в R2018b