Этот пример показывает вам, как смоделировать и симулировать выход активных и пассивных радарных датчиков. В этом примере вы наблюдаете, как интерференция радиочастоты (RF) влияет на производительность обнаружения радара. Кроме того, вы используете пассивные радарные датчики, чтобы оценить местоположение и тип радиочастотной помехи.
Оценка отслеживания производительности для радаров требует моделирования сценария радиочастоты (RF). Это включает:
Генерация эмиссии РФ
Распространение эмиссии и отражение этих выбросов платформ
Получение эмиссии, вычисление интерференционных потерь и генерация обнаружений
Этот пример показывает вам, как выполнить каждый из шагов выше использования сценария, состоящего из трех платформ:
Бортовая платформа летающий север на уровне 500 км/ч от нижней части сценария
Бортовая платформа летающий юг на уровне 600 км/ч от верхней части сценария
Бортовая платформа летающий восток на уровне 700 км/ч посреди сценария
% Create a tracking scenario to manage the movement of the platforms. scene = trackingScenario; % Set the duration of the scenario to 10 seconds. scene.StopTime = 10; % s % Platform 1: Airborne and northbound at 500 km/h spd = 500*1e3/3600; % m/s wp1 = [0 0 -6000]; wp2 = [spd*scene.StopTime 0 -6000]; toa = [0; scene.StopTime]; platform(scene, 'Trajectory', waypointTrajectory('Waypoints', [wp1; wp2], 'TimeOfArrival', toa)); % Platform 2: Airborne and southbound at 600 km/h spd = 600*1e3/3600; % m/s wp1 = [30e3+spd*scene.StopTime 0 -6000]; wp2 = [30e3 0 -6000]; toa = [0; scene.StopTime]; platform(scene, 'Trajectory', waypointTrajectory('Waypoints', [wp1; wp2], 'TimeOfArrival', toa)); % Platform 3: Airborne and eastbound at 700 km/h spd = 700*1e3/3600; % m/s wp1 = [10e3 1e3 -6000]; wp2 = [10e3 1e3+spd*scene.StopTime -6000]; toa = [0; scene.StopTime]; platform(scene, 'Trajectory', waypointTrajectory('Waypoints', [wp1; wp2], 'TimeOfArrival', toa));
Используйте theaterPlot
создать отображение, показывающее платформы в сценарии и их траекториях.
ax = axes; theaterDisplay = theaterPlot('Parent',ax,'AxesUnit',["km" "km" "km"], 'XLim',[-10000 40000] , 'YLim', [-20000 20000], 'ZLim',[-1e7 1e7]); view([90 -90]) % swap X and Y axis patch('XData',[-10000 -10000 40000 40000],'YData',[-20000 20000 20000 -20000],'EdgeColor','none', 'FaceColor',[0.8 0.8 0.8],'DisplayName','Ground'); platPlotter = platformPlotter(theaterDisplay,'DisplayName','Platforms','MarkerFaceColor','k'); plotPlatform(platPlotter,vertcat(scene.platformPoses.Position)); trajPlotter = trajectoryPlotter(theaterDisplay,'DisplayName','Trajectories','LineStyle','-'); allTrajectories = cellfun(@(x) x.Trajectory.lookupPose(linspace(0,scene.StopTime,10)), scene.Platforms, 'UniformOutput', false); plotTrajectory(trajPlotter,allTrajectories);
Часто, радар действует в среде, где другая нежелательная эмиссия РФ вмешивается в формы волны, испускаемые радаром. Когда это произойдет, радар испытает ухудшение в производительности обнаружения в направлении вмешивающихся сигналов. Присоедините эмиттер РФ к платформе в нижней части сценария (первая платформа) и радар на платформу наверху сценария (вторая платформа).
Создайте эмиттер РФ
Смоделируйте эмиссию РФ с помощью radarEmitter
. Эмиттер находится в перспективной настройке с азимутальным полем зрения 20 градусов, чтобы включать 2 других платформы в сценарий. Эффективная изотропная излученная степень (EIRP) устанавливает силу вмешивающегося сигнала. Тип формы волны является пользовательским значением, используемым, чтобы перечислить различные типы формы волны, которые присутствуют в сценарии. Для этого сценария используйте значение 0, чтобы указать на шумовой тип формы волны.
% Create the interference emitter. rfEmitter = radarEmitter(1, 'No scanning', ... 'FieldOfView', [20 5], ... % [az el] deg 'EIRP', 200, ... % dBi 'CenterFrequency', 300e6, ... % Hz 'Bandwidth', 30e6, ... % Hz 'WaveformType', 0) % Use 0 for noise-like emissions
rfEmitter = radarEmitter with properties: EmitterIndex: 1 UpdateRate: 1 ScanMode: 'No scanning' MountingLocation: [0 0 0] MountingAngles: [0 0 0] FieldOfView: [2×1 double] MechanicalAngle: 0 LookAngle: 0 HasElevation: 0 EIRP: 200 CenterFrequency: 300000000 Bandwidth: 30000000 WaveformType: 0 ProcessingGain: 0
Присоедините эмиттер к первой платформе.
platEmit = scene.Platforms{1}; platEmit.Emitters = rfEmitter
platEmit = Platform with properties: PlatformID: 1 ClassID: 0 Dimensions: [1×1 struct] Trajectory: [1×1 waypointTrajectory] PoseEstimator: [1×1 insSensor] Emitters: {[1×1 radarEmitter]} Sensors: {} Signatures: {[1×1 rcsSignature] [1×1 irSignature] [1×1 tsSignature]}
Создайте моностатический радар
Оборудуйте вторую платформу моностатическим радаром. Используйте monostaticRadarSensor
смоделировать этот тип радара. Сконфигурируйте радар, чтобы отсканировать сектор азимута перед его платформой, которая включает другие платформы.
% Create a monostatic radar. radar = monostaticRadarSensor(2, 'Sector', ... 'UpdateRate', 12.5, ... % Hz 'FieldOfView', [2 10]); % [az el] deg % Mount the radar so that it scans the sector in front of the second % platform which includes the interfering signal and the third platform. radar.MountingAngles = [0 0 0]; % [Z Y X] deg % Enable the radar's INS input so that it can use the pose estimated by % the platform's pose estimator to generate detections. radar.HasINS = true; % Enable the radar's interference input so that the interference signal % created by the emitter above can be passed to the radar. radar.HasInterference = true; % Set coordinate system for detections to scenario radar.DetectionCoordinates = 'scenario'
radar = monostaticRadarSensor with properties: SensorIndex: 2 UpdateRate: 12.5000 ScanMode: 'Mechanical' MountingLocation: [0 0 0] MountingAngles: [0 0 0] MaxUnambiguousRange: 100000 MaxUnambiguousRadialSpeed: 200 FieldOfView: [2×1 double] MaxMechanicalScanRate: 75 MechanicalScanLimits: [-45 45] MechanicalAngle: 0 LookAngle: 0 DetectionProbability: 0.9000 FalseAlarmRate: 1.0000e-06 Show all properties
% Attach the radar to the second platform.
platRadar = scene.Platforms{2};
platRadar.Sensors = radar;
Обновите отображение, чтобы показать платформы, радар и эмиттер в сценарии.
emitterColor = [0.9290 0.6940 0.1250]; radarColor = [0 0.4470 0.7410]; platEmitPlotter = platformPlotter(theaterDisplay,'DisplayName', 'RF emitter','Marker','d','MarkerFaceColor',emitterColor); platRadarPlotter = platformPlotter(theaterDisplay,'DisplayName','Monostatic radar','Marker','d','MarkerFaceColor',radarColor); platPlotter.DisplayName = 'Targets'; clearData(platPlotter); covPlotter = coveragePlotter(theaterDisplay,'Alpha',[0.2 0]); detPlotter = detectionPlotter(theaterDisplay,'DisplayName','Radar detections','MarkerFaceColor',radarColor); title('Radar detection with an interfering emitter'); plotPlatform(platRadarPlotter, platRadar.pose.Position); plotPlatform(platEmitPlotter, platEmit.pose.Position); plotPlatform(platPlotter, scene.Platforms{3}.pose.Position); plotCoverage(covPlotter, coverageConfig(scene), [-1 2], {emitterColor, radarColor});
В предыдущей фигуре платформа, несущая перспективный радар, показывается синим ромбом с текущим полем зрения радара как синяя область, происходящая из платформы. В нижней части фигуры платформа, несущая вмешивающуюся эмиссию РФ, показывается желтым ромбом с текущим полем зрения эмиттера, показавшим соответствующей желтой областью. Платформы без любых эмиттеров или датчиков, присоединенных к ним, упоминаются как цели и отображены как черные треугольники.
Симулируйте моностатические обнаружения
В многоскоростных сценариях можно или найти частоту обновления, которая является общим делителем всех датчиков и уровней эмиттеров, заданных в сценарии, или можно использовать непрерывное обновление, которое автоматически усовершенствует сценарий к следующему допустимому разу обновления при вызове advance
.
scene.UpdateRate = 0
scene = trackingScenario with properties: UpdateRate: 0 StopTime: 10 SimulationTime: 0 IsRunning: 1 Platforms: {[1×1 fusion.scenario.Platform] [1×1 fusion.scenario.Platform] [1×1 fusion.scenario.Platform]}
Для каждого шага в следующем использовании цикла:
advance
перемещать все платформы согласно их траекториям.
emit
чтобы обновить эмиссию передают направление от platEmit
.
propagate
распространить эмиссию непосредственно на каждую платформу в сценарии, который находится в поле зрения эмиттера. Каждая платформа, которая получает прямую эмиссию пути, генерирует отражение одно возврата, которое также распространено на любую платформу как отраженная эмиссия.
detect
сгенерировать обнаружения от эмиссии, полученной в platRadar
.
Это распространение эмиссии эмиттера с эмиттера на радарный датчик проиллюстрировано в следующем изображении.
% Set the random seed for repeatable results. rng(2018); plotDets = {}; while advance(scene) % Emit the RF signal. txEmiss = emit(scene); % Reflect the emitted signal off of the platforms in the scenario. reflEmiss = propagate(scene, txEmiss); % Generate detections from the monostatic radar sensor. [dets, config] = detect(scene, reflEmiss); % Reset detections every time the radar completes a sector scan. if config.IsScanDone % Reset plotDets = dets; else % Buffer plotDets = [plotDets;dets]; %#ok<AGROW> end % Update display with current platform positions, beam positions and detections. plotPlatform(platRadarPlotter, platRadar.pose.Position); plotPlatform(platEmitPlotter, platEmit.pose.Position); plotPlatform(platPlotter, scene.Platforms{3}.pose.Position); plotCoverage(covPlotter, coverageConfig(scene), [-1 2], {emitterColor, radarColor}); if ~isempty(plotDets) allDets = [plotDets{:}]; % extract column vector of measurement positions meas = [allDets.Measurement]'; plotDetection(detPlotter,meas); end end
Как показано в предыдущей фигуре, радар (отображенный синим) только может обнаружить цель посреди сценария. Обнаружения показываются синими, заполненными кругами и сделаны каждый раз, когда поле зрения радара (например, луч) развертывается через цель. Однако, когда развертки луча радара через платформу испускания (отображенный желтым), никакие обнаружения не сгенерированы, поскольку интерференция, сгенерированная этой платформой, предотвращает обнаружение радаром.
В предыдущем разделе радар не мог обнаружить местоположение платформы испускания, потому что выбросы той платформы замаскировали собственную эмиссию радара. Однако такая сильная эмиссия может быть обнаружена и идентифицирована пассивными датчиками, которые прислушиваются к эмиссии РФ в сценарии. Эти датчики часто упоминаются как электронные меры по поддержке (ESM). Эти датчики обычно слушают через широкий диапазон частот и пытаются идентифицировать уникальные эмиттеры, направление прибытия выбросов тех эмиттеров, и каждый раз, когда возможно, тип формы волны, используемой эмиттером.
Создайте датчик ESM
Снова используйте сценарий от предыдущего раздела, но замените моностатический радар на первой платформе с датчиком ESM. Используйте radarSensor
смоделировать датчик ESM и гарантировать, что датчик сконфигурирован так, чтобы его центральная частота и пропускная способность включали спектр РФ эмиттера. В противном случае это будет неспособно способный обнаружить эмиттер.
restart(scene); esm = radarSensor(1, 'No scanning', ... 'DetectionMode', 'ESM', ... 'UpdateRate', 12.5, ... % Hz 'MountingAngles', [0 0 0], ... % [Z Y X] deg 'FieldOfView', [30 10], ... % [az el] deg 'CenterFrequency', 300e6, ... % Hz 'Bandwidth', 30e6, ... % Hz 'WaveformTypes', 0, ... % Detect the interference waveform type 'HasINS', true)
esm = radarSensor with properties: SensorIndex: 1 UpdateRate: 12.5000 ScanMode: 'No scanning' DetectionMode: 'ESM' MountingLocation: [0 0 0] MountingAngles: [0 0 0] FieldOfView: [2×1 double] MechanicalAngle: 0 LookAngle: 0 Sensitivity: -50 FalseAlarmRate: 1.0000e-06 Show all properties
Замените радар на второй платформе с датчиком ESM.
platESM = scene.Platforms{2}; platESM.Sensors = esm;
Обновите визуализацию соответственно
platRadarPlotter.DisplayName = "ESM sensor"; esmColor = [0.4940 0.1840 0.5560]; platRadarPlotter.MarkerFaceColor = esmColor; % use a helper to add an angle only detection plotter delete(detPlotter); esmDetPlotter = helperAngleOnlyDetectionPlotter(theaterDisplay,'DisplayName','ESM detections','Color',esmColor,'LineStyle','-'); clearData(covPlotter); plotCoverage(covPlotter, coverageConfig(scene), [-1 1], {emitterColor, esmColor}); title('Passive detection of RF emissions');
В предыдущей фигуре радар заменяется датчиком ESM, смонтированным на второй платформе. Поле зрения датчика ESM отображают пурпурным и включает и испускание и целевые платформы.
Симулируйте обнаружения ESM
Теперь симулируйте обнаружения с помощью датчика ESM вместо радара. Вы заметите, что, потому что датчик ESM является пассивным датчиком, это не может локализовать платформу испускания, но указывает на направление прибытия эмиссия платформы. Эти обнаружения только для угла показываются лучами, происходящими из датчика ESM к платформе испускания.
% Set the random seed for repeatable results. rng(2018); plotDets = {}; snap = []; while advance(scene) % Emit the RF signal. txEmiss = emit(scene); % Reflect the emitted signal off of the platforms in the scenario. reflEmiss = propagate(scene, txEmiss); % Generate detections from the monostatic radar sensor. [dets, config] = detect(scene, reflEmiss); % Reset detections every time the radar completes a sector scan. if config.IsScanDone % Reset plotDets = dets; else % Buffer plotDets = [plotDets;dets]; %#ok<AGROW> end % Update display with current platform positions, beam positions and detections. plotPlatform(platRadarPlotter, platRadar.pose.Position); plotPlatform(platEmitPlotter, platEmit.pose.Position); plotPlatform(platPlotter, scene.Platforms{3}.pose.Position); plotCoverage(covPlotter, coverageConfig(scene), [-1 1], {emitterColor, esmColor}); plotDetection(esmDetPlotter,plotDets); % Record the reflected detection at t = 2 sec snap = getSnap(ax, scene.SimulationTime, 2, snap); drawnow end title('RF emitter detected by an ESM sensor');
Эмиссия РФ обнаруживается, и их направление прибытия оценивается датчиком ESM. Это показывает пурпурная линия, происходящая из датчика и тесно передающая эмиттером. В предполагаемом углу существует некоторый шум, который является, почему линия не передает непосредственно через местоположение эмиттера.
Датчик ESM классифицирует типы формы волны на свои обнаружения, о которых сообщают. Для этого эмиттера это сообщает о шумовом типе формы волны, используемом эмиттером: 0.
dets{1}.ObjectAttributes{1}
ans = struct with fields:
TargetIndex: 1
EmitterIndex: 1
WaveformType: 0
SNR: 184.8224
Заметьте, что отношение сигнал-шум (SNR) испускаемого сигнала, обнаруженного датчиком, является очень большим, 185 дБ. Поскольку эмиттер РФ имеет большую силу, отражения испускаемой формы волны прочь цели будут также обнаружены датчиком ESM. Это замечено в 2 секунды в симуляции, когда цель находится в поле зрения эмиттера.
figure; imshow(snap.cdata);
title('Emitter and target detected by an ESM sensor');
В предыдущей фигуре эмиссия обнаруживается и от эмиттера и от цели, когда цель получает энергию от эмиттера и повторно испускает ту форму волны назад в сценарий, заставляя его быть обнаруженной датчиком ESM также.
Моностатические радары также испускают формы волны в сценарий. Иногда желательно смочь обнаружить их эмиссию. Для этого необходимо смоделировать и испускание и обнаружение фрагментов радара отдельно. Эмиттер генерирует формы волны, которые становятся частью эмиссии РФ сценария. Эти формы волны могут затем быть обнаружены другими датчиками, такими как датчик ESM, представленный в предыдущем разделе.
Снова используйте тот же сценарий от предыдущих разделов. Для этого сценария присоедините моностатический радар к платформе наверху сценария (вторая платформа) и присоедините датчик ESM к платформе в нижней части сценария (первая платформа). Средняя платформа остается цель без эмиттеров или датчиков, присоединенных к нему.
restart(scene);
Создайте моностатический радар путем моделирования и испускания и обнаружения фрагментов датчика. Используйте radarEmitter
смоделировать моностатический радарный эмиттер. Для этого сценария используйте 1, чтобы указать на тип формы волны, используемый этим радаром, где, возможно, 1 представляет щебет LFM некоторыми предопределенными параметрами. Тип формы волны является перечислением, заданным пользователем, чтобы представлять различные виды форм волны, симулированных в сценарии. Это позволяет эмиттерам и датчикам знать, как обработать эти формы волны, чтобы сгенерировать обнаружения. Например, если эмиттер будет иметь тип формы волны 1, и датчик включает этот тип в свой список форм волны, то датчик будет знать, как обработать эмиссию эмиттера (например, использование согласованного фильтра) и обнаружит эмиссию и поймет усиление обработки, сопоставленное с той формой волны.
% Create the emitter for the monostatic radar. radarTx = radarEmitter(2, 'Sector', ... 'UpdateRate', 12.5, ... % Hz 'MountingAngles', [0 0 0], ... % [Z Y X] deg 'FieldOfView', [2 10], ... % [az el] deg 'CenterFrequency', 300e6, ... % Hz 'Bandwidth', 3e6, ... % Hz 'ProcessingGain', 50, ... % dB 'WaveformType', 1) % Use 1 to indicate this radar's waveform
radarTx = radarEmitter with properties: EmitterIndex: 2 UpdateRate: 12.5000 ScanMode: 'Mechanical' MountingLocation: [0 0 0] MountingAngles: [0 0 0] FieldOfView: [2×1 double] MaxMechanicalScanRate: 75 MechanicalScanLimits: [-45 45] MechanicalAngle: 0 LookAngle: 0 HasElevation: 0 EIRP: 100 CenterFrequency: 300000000 Bandwidth: 3000000 WaveformType: 1 ProcessingGain: 50
Используйте radarSensor
смоделировать распознающийся фрагмент радара, который получает эмиссию РФ в сценарии, идентифицирует эмиссию, который соответствует типу формы волны моностатического эмиттера и генерирует обнаружения от этой полученной эмиссии. Эмиссия, которая не совпадает с типом формы волны эмиттера, обработана как интерференция.
При использовании radarSensor
чтобы смоделировать распознающийся фрагмент моностатического радара, необходимо установить DetectionMode
свойство датчика к Monostatic
. Это говорит датчику использовать настройку эмиттера при обработке полученной эмиссии РФ.
radarRx = radarSensor(2, ... 'DetectionMode', 'Monostatic', ... 'EmitterIndex', radarTx.EmitterIndex, ... 'HasINS', true,... 'DetectionCoordinates','Scenario')
radarRx = radarSensor with properties: SensorIndex: 2 DetectionMode: 'Monostatic' EmitterIndex: 2 MaxUnambiguousRange: 100000 MaxUnambiguousRadialSpeed: 200 LookAngle: 0 Sensitivity: -50 FalseAlarmRate: 1.0000e-06 Show all properties
% Attach to the radar emitter and sensor to the second platform.
platRadar = scene.Platforms{2};
platRadar.Emitters = radarTx;
platRadar.Sensors = radarRx;
Снова используйте датчик ESM от предыдущего раздела, но установите список известных типов формы волны для датчика ESM включать форму волны, испускаемую радаром. Если тип формы волны радара не будет известен датчику ESM, он не будет обнаружен.
% Add the radar's waveform to the list of known waveform types for the ESM sensor. esm.WaveformTypes = [0 1]; % Attach the ESM sensor to the first platform. platESM = scene.Platforms{1}; platESM.Emitters = {}; % Remove the emitter. platESM.Sensors = esm;
Обновите отображение, чтобы показать и моностатические обнаружения и обнаружения радиоразведки.
detPlotter = detectionPlotter(theaterDisplay,'DisplayName','Radar detections','MarkerFaceColor',radarColor); platRadarPlotter.DisplayName = 'Monostatic radar'; platRadarPlotter.MarkerFaceColor = radarColor; platEmitPlotter.DisplayName = 'ESM sensor'; platEmitPlotter.MarkerFaceColor = esmColor; clearData(esmDetPlotter); clearData(covPlotter); covcon = coverageConfig(scene); plotCoverage(covPlotter, covcon([1 3]) , [1 -2], {esmColor, radarColor}); title(ax,'Passive detection of a monostatic radar');
В предыдущей фигуре радар сканирует сектор азимута перед своей платформой, которая включает обоих целевая платформа, а также платформа, несущая датчик ESM. Радар сгенерирует обнаружения для обеих из этих платформ, когда его поле зрения (отображенный синим) развернется по их местоположению. Однако, когда луч радара передает по местоположению датчика ESM, датчик ESM обнаружит радар и укажет на его предполагаемое положение, чертя линию, происходя из местоположения датчика.
% Set the random seed for repeatable results. rng(2018); platforms = scene.Platforms; numPlat = numel(platforms); plotDets = {}; snap = []; while advance(scene) % Emit the RF signal. [txEmiss, txConfigs] = emit(scene); % Reflect the emitted signal off of the platforms in the scenario. reflEmiss = propagate(scene, txEmiss); % Generate detections from the monostatic radar sensor. [dets, config] = detect(scene, reflEmiss, txConfigs); % Reset detections every time the radar completes a sector scan. if txConfigs(end).IsScanDone % Reset plotDets = dets; else % Buffer plotDets = [plotDets;dets];%#ok<AGROW> end % Update display with current platform positions, beam positions and detections. plotPlatform(platRadarPlotter, platRadar.pose.Position); plotPlatform(platEmitPlotter, platEmit.pose.Position); plotPlatform(platPlotter, scene.Platforms{3}.pose.Position); covcon = coverageConfig(scene); plotCoverage(covPlotter, covcon([1 3]) , [1 -2], {esmColor, radarColor}); plotDetection(esmDetPlotter,plotDets); plotMonostaticDetection(detPlotter,plotDets); % Record the reflected detection at t = 5.6 sec snap = getSnap(ax, scene.SimulationTime, 5.6, snap); drawnow end
Обнаружения от моностатического радара, смоделированного с помощью radarEmitter
и radarSensor
показываются заполненными, синими кругами около цели и платформы, оборудованной датчиком ESM. Датчик ESM также может обнаружить радар, как обозначается обнаружением только для угла, показавшим линией, происходящей из датчика ESM и передающей около радарной платформы.
figure; imshow(snap.cdata);
title('Radar and target detected by an ESM sensor');
Из-за большой мощности (EIRP) эмиссии радара испускаемая энергия отражается прочь цели к платформе ESM также. Это приводит к датчику ESM, обнаруживающему целевую платформу время от времени, когда радарное поле зрения эмиттера проносится мимо целевой платформы, когда цель все еще в поле зрения датчика ESM.
В этом примере вы изучили, как симулировать удар радиочастотной помехи на моностатическом радаре. Вы также изучили, как симулировать пассивные датчики, которые могут обнаружить эти интерференционные источники, а также радарные датчики в сценарии.
getSnap
Записывает снимок состояния оси в данное поспешное время.
function snap = getSnap(hAx, curTime, snapTime, prevSnap) if ~isempty(prevSnap) snap = prevSnap; elseif curTime >= snapTime && curTime < snapTime + 0.05 hAx.Title.Visible = 'off'; snap = getframe(hAx.Parent); hAx.Title.Visible = 'on'; else snap = []; end end
plotMonostaticDetection
Обнаружения синтаксических анализов, чтобы построить только моностатические обнаружения с detectionPlotter.
function plotMonostaticDetection(plotter, dets) if ~isempty(dets) % Pass only monostatic detections to the detectionPlotter radarDetId = cellfun(@(x) x.SensorIndex == 2, dets); if any(radarDetId) % extract measurement positions for the monostatic radar radarDets = [dets{radarDetId}]; meas = [radarDets.Measurement]'; plotDetection(plotter,meas); end end end