staticDetectionFuser

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

Описание

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

Для получения фузера:

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

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

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

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

пример

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

Свойства

расширить все

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

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

Пример: 5

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

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

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

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

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

  • fusedMeasurementNoise - N -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. The staticDetectionFuser вычисляет стоимость запала обнаружений от каждого датчика как задачу n-D назначения. Большую часть времени fuser тратит на вычисление матрицы затрат для задачи назначения. Если установлен Parallel Computing Toolbox™, эта опция позволяет фузеру использовать параллельный пул рабочих для вычисления матрицы затрат.

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

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

Пример: 1e-3

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

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

Описание

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

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

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

расширить все

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

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

расширить все

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

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

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

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

  • FalseAlarms - A Q -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')

Figure contains an axes. The axes contains 2 objects of type line.

Создайте 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)

Figure contains an axes. The axes with title Angle-only Detection Fusion contains 3 objects of type line. These objects represent Angle-only Detections, Sensor Positions, Fused Target Measurements.

Используйте 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] Бар-Шалом, Яаков, Питер К. Виллетт и Синь Тянь. Отслеживание и слияние данных. Storrs, CT, USA:: YBS publishing, 2011.

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

.

См. также

Функции

Объекты

Введенный в R2018b