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

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

Введение

Оценка эффективности отслеживания для радаров требует моделирования радиочастотного (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.

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

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

Создайте радиочастотный излучатель

Моделируйте радиочастотный выброс с помощью 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

Повторно используйте сценарий из предыдущего раздела, но замените моностатический радар на первой платформе на датчик 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.

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

Датчик ESM классифицирует типы сигналов в своих сообщенных обнаружениях. Для этого эмиттера он сообщает тип шумового сигнала, используемый эмиттером: 0.

dets{1}.ObjectAttributes{1}
ans = struct with fields:
     TargetIndex: 1
    EmitterIndex: 1
    WaveformType: 0
             SNR: 184.8224

Заметьте, что отношение сигнал/шум (ОСШ) излучаемого сигнала, обнаруженного датчиком, очень велико, 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.

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

Моностатические радары также излучают формы волны в сценарий. Иногда желательно иметь возможность обнаружить их выбросы. Для этого необходимо смоделировать и излучающую, и чувствительные фрагменты радара отдельно. Излучатель генерирует формы сигналов, которые становятся частью выбросов RF сценария. Эти формы волны могут затем быть обнаружены другими датчиками, такими как датчик 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. Это говорит датчику использовать строение излучателя при обработке полученных радиочастотных выбросов. The 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