exponenta event banner

Имитация пассивных радиолокационных датчиков и радиолокационных помех

В этом примере показано, как моделировать и моделировать выходные данные активных и пассивных радиолокационных датчиков с помощью radarDataGenerator. В этом примере показано, как радиочастотные помехи влияют на характеристики обнаружения радара. Кроме того, для оценки местоположения и типа радиочастотных помех используются пассивные радиолокационные датчики.

Введение

Оценка характеристик слежения для радаров требует моделирования радиочастотного (RF) сценария. Это включает в себя:

  • Генерация радиоизлучений

  • Распространение выбросов и отражение этих выбросов с платформ

  • Получение выбросов, расчет потерь помех и генерация обнаружений

Создать сценарий

В этом примере показано, как выполнить каждый из описанных выше шагов с использованием сценария, состоящего из трех платформ:

  1. Воздушно-десантная платформа, летящая на север со скоростью 500 км/ч от дна сценария

  2. Воздушно-десантная платформа, летящая на юг со скоростью 600 км/ч от вершины сценария

  3. Воздушно-десантная платформа, летящая на восток со скоростью 700 км/ч в середине сценария

% Create a radar scenario to manage the movement of the platforms.
scene = radarScenario;

% 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);

Figure contains an axes. The axes contains 3 objects of type patch, line. These objects represent Ground, Platforms, Trajectories.

Радиолокационное обнаружение при наличии мешающих выбросов

Часто радар работает в среде, где другие нежелательные ВЧ-излучения мешают сигналам, излучаемым радаром. Когда это происходит, радар будет испытывать ухудшение характеристик обнаружения в направлении мешающих сигналов. Прикрепите радиочастотный излучатель к платформе в нижней части сценария (первая платформа) и радар к платформе в верхней части сценария (вторая платформа).

Создание радиочастотного излучателя

Моделирование радиочастотного излучения с использованием 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: [2x1 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
         Position: [0 0 -6000]
      Orientation: [0 0 0]
       Dimensions: [1x1 struct]
       Trajectory: [1x1 waypointTrajectory]
    PoseEstimator: [1x1 insSensor]
         Emitters: {[1x1 radarEmitter]}
          Sensors: {}
       Signatures: {[1x1 rcsSignature]}

Создание моностатического радара

Оснастить вторую платформу моностатическим радаром. Использовать radarDataGenerator для моделирования этого типа РЛС. Сконфигурируйте радар для сканирования сектора азимута перед его платформой, включающей другие платформы.

% Create a monostatic radar.
radar = radarDataGenerator(2, 'Sector', ...
    'DetectionMode', 'monostatic', ...
    '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.InterferenceInputPort = true;

% Set coordinate system for detections to scenario
radar.DetectionCoordinates = 'scenario'
radar = 
  radarDataGenerator with properties:

              SensorIndex: 2
               UpdateRate: 12.5000
            DetectionMode: 'Monostatic'
                 ScanMode: 'Mechanical'
    InterferenceInputPort: 1
       EmissionsInputPort: 0

         MountingLocation: [0 0 0]
           MountingAngles: [0 0 0]

              FieldOfView: [2 10]
              RangeLimits: [0 100000]

     DetectionProbability: 0.9000
           FalseAlarmRate: 1.0000e-06
           ReferenceRange: 100000

       TargetReportFormat: 'Clustered detections'

  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});

Figure contains an axes. The axes with title Radar detection with an interfering emitter contains 6 objects of type patch, line. These objects represent Ground, Targets, Trajectories, RF emitter, Monostatic radar, Radar detections.

На предыдущем чертеже платформа, несущая радар дальнего обзора, показана в виде голубого алмаза, а текущее поле зрения радара - в виде синей области, исходящей от платформы. В нижней части рисунка платформа, несущая мешающее радиочастотное излучение, показана в виде желтого алмаза, а текущее поле зрения эмиттера показано в виде соответствующей желтой области. Платформы без каких-либо излучателей или датчиков, прикрепленных к ним, называются целями и отображаются в виде черных треугольников.

Имитация моностатических обнаружений

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

scene.UpdateRate = 0
scene = 
  radarScenario with properties:

     IsEarthCentered: 0
          UpdateRate: 0
      SimulationTime: 0
            StopTime: 10
    SimulationStatus: NotStarted
           Platforms: {1x3 cell}

Для каждого шага в следующем цикле используйте:

  1. advance для перемещения всех платформ в соответствии с их траекториями.

  2. emit для обновления направления передачи выбросов из platEmit.

  3. propagate распространение выбросов непосредственно на каждую платформу в сценарии, который находится в поле зрения эмиттера. Каждая платформа, которая принимает излучение прямого пути, генерирует отражение с одним возвратом, которое также распространяется на каждую другую платформу как отраженное излучение.

  4. 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

Figure contains an axes. The axes with title Radar detection with an interfering emitter contains 6 objects of type patch, line. These objects represent Ground, Targets, Trajectories, RF emitter, Monostatic radar, Radar detections.

Как показано на предыдущем рисунке, радар (показан синим цветом) способен обнаружить цель только в середине сценария. Детекции отображаются синими, закрашенными кругами и выполняются всякий раз, когда поле зрения радара (например, луч) протягивается по цели. Однако, когда луч радара протягивается по излучающей платформе (показана желтым цветом), никаких обнаружений не генерируется, поскольку помехи, генерируемые этой платформой, препятствуют обнаружению радаром.

Пассивное обнаружение радиоизлучений

В предыдущем разделе радар не смог обнаружить местоположение излучающей платформы, поскольку выбросы с этой платформы маскировали собственные выбросы радара. Однако такие сильные выбросы могут быть обнаружены и идентифицированы пассивными датчиками, которые прослушивают радиочастотные выбросы в сценарии. Эти датчики часто называют электронными мерами поддержки (ЭОР). Эти датчики обычно прослушивают широкий диапазон частот и пытаются идентифицировать уникальные излучатели, направление поступления излучения от этих излучателей и, когда это возможно, тип сигнала, используемого излучателем.

Создание датчика ESM

Повторно используйте сценарий из предыдущего раздела, но замените моностатический радар на первой платформе на датчик ESM. Использовать radarDataGenerator для моделирования датчика ESM и проверки того, что датчик сконфигурирован таким образом, что его центральная частота и полоса пропускания включают в себя радиочастотный спектр излучателя. В противном случае он не сможет обнаружить излучатель.

restart(scene);
esm = radarDataGenerator(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 = 
  radarDataGenerator with properties:

         SensorIndex: 1
        EmitterIndex: 1
          UpdateRate: 12.5000
       DetectionMode: 'ESM'
            ScanMode: 'No scanning'

    MountingLocation: [0 0 0]
      MountingAngles: [0 0 0]

         FieldOfView: [30 10]

      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');

Figure contains an axes. The axes with title Passive detection of RF emissions contains 6 objects of type patch, line. These objects represent Ground, Targets, Trajectories, RF emitter, ESM sensor, ESM detections.

На предыдущем рисунке радар заменен датчиком 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 ESM 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');

Figure contains an axes. The axes with title RF emitter detected by an ESM sensor contains 6 objects of type patch, line. These objects represent Ground, Targets, Trajectories, RF emitter, ESM sensor, ESM detections.

Радиоизлучения обнаруживаются, и направление их поступления оценивается датчиком ЭОР. Это показано пурпурной линией, исходящей от датчика и близко проходящей через эмиттер. В расчётном угле есть некоторый шум, из-за чего линия не проходит непосредственно через расположение излучателя.

Датчик 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');

Figure contains an axes. The axes with title Emitter and target detected by an ESM sensor contains an object of type image.

На предыдущем рисунке выбросы обнаруживаются как от излучателя, так и от мишени, так как мишень получает энергию от излучателя и повторно излучает эту форму сигнала обратно в сценарий, вызывая ее обнаружение также с помощью датчика ЭОР.

Пассивное обнаружение моностатических радаров

Моностатические радары также излучают сигналы в сценарий. Иногда желательно иметь возможность обнаруживать их выбросы. Для этого необходимо смоделировать как излучающую, так и чувствительную части радара по отдельности. Эмиттер генерирует сигналы, которые становятся частью радиочастотных излучений сценария. Эти сигналы могут быть затем обнаружены другими датчиками, такими как датчик 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: [2x1 double]
    MaxMechanicalScanRate: 75
     MechanicalScanLimits: [-45 45]
          MechanicalAngle: 0
                LookAngle: 0
             HasElevation: 0

                     EIRP: 100
          CenterFrequency: 300000000
                Bandwidth: 3000000
             WaveformType: 1
           ProcessingGain: 50

Использовать radarDataGenerator для моделирования чувствительной части РЛС, которая принимает радиочастотные излучения в сценарии, идентифицирует излучения, которые соответствуют типу сигнала моностатического излучателя, и генерирует обнаружения из этих принятых излучений. Выбросы, которые не соответствуют типу сигнала излучателя, рассматриваются как помехи.

При использовании radarDataGenerator для моделирования чувствительной части моностатического радара установите DetectionMode свойство датчика для Monostatic. Это предписывает датчику использовать конфигурацию эмиттера при обработке полученных РЧ-излучений. EmissionsInputPort свойство также должно иметь значение true, чтобы включить обнаружение на radarEmission объекты.

radarRx = radarDataGenerator(2, ...
    'DetectionMode', 'Monostatic', ...
    'EmissionsInputPort', true, ...
    'EmitterIndex', radarTx.EmitterIndex, ...
    'HasINS', true,...
    'DetectionCoordinates','Scenario')
radarRx = 
  radarDataGenerator with properties:

              SensorIndex: 2
             EmitterIndex: 2
            DetectionMode: 'Monostatic'
    InterferenceInputPort: 0
       EmissionsInputPort: 1

              RangeLimits: [0 100000]

           FalseAlarmRate: 1.0000e-06

       TargetReportFormat: 'Clustered detections'

  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;

Обновите дисплей для отображения как моностатических, так и 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');

Figure contains an axes. The axes with title Passive detection of a monostatic radar contains 7 objects of type patch, line. These objects represent Ground, Targets, Trajectories, ESM sensor, Monostatic radar, ESM detections, Radar detections.

На предыдущем рисунке радар сканирует сектор азимута перед своей платформой, которая включает в себя как целевую платформу, так и платформу, несущую датчик 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 sensors.
    [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

Figure contains an axes. The axes with title Passive detection of a monostatic radar contains 7 objects of type patch, line. These objects represent Ground, Targets, Trajectories, ESM sensor, Monostatic radar, ESM detections, Radar detections.

Обнаружение с моностатического радара, смоделированного с помощью radarEmitter и radarDataGenerator отображаются как заполненные, синие кружки возле цели и площадки, оборудованной датчиком ESM. Датчик ESM также способен обнаруживать РЛС, о чем свидетельствует обнаружение только под углом, показанное как линия, исходящая от датчика ESM и проходящая вблизи радиолокационной платформы.

figure; imshow(snap.cdata);
title('Radar and target detected by an ESM sensor');

Figure contains an axes. The axes with title Radar and target detected by an ESM sensor contains an object of type image.

Из-за высокой мощности (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