Main Content

Evaluating Interference from 5G New Radio (NR) Signals at an Airport Surveillance Radar

As the frequency range of 5G NR systems increase beyond the bands used in LTE, spectrum management becomes more complex. The demand for expanded 5G coverage is driven by the benefits of higher data rates and lower latencies. The implementation of new 5G base stations in turn drives the need to understand how these signals affect installed systems that operate around the same frequency bands. One such system is an air traffic control radar.

In this example, you will learn how to model an air traffic control radar which operates in the vicinity of a 5G base station. We will look at how 5G signals affect the received radar signals. We use a scenario with an aircraft approaching the airport from the same direction as the base station. The radar return from the aircraft is processed with and without the presence of the 5G waveform.

Many different mitigation techniques can be applied to reduce interference, but in this example, we implement a beamformer at the base station that reduces transmitted energy in the direction of the radar.


We first set up a scenario with the basestation location based on guidance in the 3GPP TR 38.901 specification. The base station is mounted on a rooftop on a building at a distance of 2.5 km from the airport.

The airport radar model is based on an Airport Surveillance Radar (ASR-11).

An aircraft is approaching the radar from the same direction as the base station.

Scatterers are added to the scenario to account for multipath reflections due to buildings in the path between the aircraft and the radar.

% Airport Radar position
asrPos=[0; 0; 15];
asrAxes = eye(3);
asrVel = [0; 0; 0];

% 5G Base Station position
bsPos = [2.5e+03; 0; 25]; 
bsAxes = rotz(180);

% Approaching aircraft starting position and velocity
targetPos = [50E3;0;450];
targetVel = [0;0;0];

% Channel parameters

% Generate 15 scatterers at random positions
rng(2021);                          % Initialize random number generator
numScat = 15; 
azRange = -180:+180;
randAzOrder = randperm(length(azRange));
elRange = 0;
rRange = 0.5e3 : 2.5 : 1e3;
randROrder = randperm(length(rRange));
azAngInSph = deg2rad(azRange(randAzOrder(1:numScat)));
elAngInSph = zeros(size(azAngInSph));
r = (rRange(randROrder(1:numScat)));

% Transform spherical coordinates to Cartesian coordinates
[x,y,z] = sph2cart(azAngInSph,elAngInSph,r);
scatPos = [x;y;z] + bsPos;

scatCoef = ones(numScat,1)*1e-1;

You can plot the location of the 5G tower, the radar, and the scatterers.

figure; hold on; grid on; 
    'color','b','marker','o','MarkerFaceColor','b', ...
    'DisplayName','Airport Radar')
plot3(scatPos(1,:),scatPos(2,:),scatPos(3,:), ...
    'LineStyle','none','color','k','marker','square','MarkerFaceColor','k', ...
plot3(bsPos(1),bsPos(2),bsPos(3), ...
    'color','r','marker','hexagram','MarkerFaceColor','r', ...
    'DisplayName','Base Station')
xlabel('X (m)'); ylabel('Y (m)'); legend('location','best')

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Airport Radar, Scatterers, Base Station.

Radar Configuration

You configure a radar model to match the parameters of an Airport Surveillance Radar (ASR-11).

fc     = 2.8e9;                     % Radar carrier frequency (Hz)
c      = physconst('Lightspeed');   % Propagation speed (m/s)
lambda = c/fc;                      % Radar wavelength (m)

The radar transmits a linear FM waveform.

asrSamplingFrequency = 1e6; %  (Hz)
PRF = 1000;                 % Pulse Repition Frequency (Hz)
dutyCycle = 0.1;

asrWaveform = phased.LinearFMWaveform( ...
    'SampleRate', asrSamplingFrequency, ...
    'DurationSpecification', 'Duty cycle', ...
    'DutyCycle', dutyCycle, ...
    'PRF', PRF);

The ASR-11 uses a parabolic reflector with a horn exciter. You can use an antenna element from Antenna Toolbox to generate the design.

rad=2.5;        % radius [m]
flen=2.5;       % focal length
% Create antenna
% (create)
% (orient)
asrAntennaElement.Exciter.TiltAxis=[0 1 0];
asrAntennaElement.TiltAxis=[0 1 0];
% (params)

% (final create)
asrAntenna = phased.ConformalArray('Element',asrAntennaElement);

asrRadiator = phased.Radiator('OperatingFrequency',fc,...
    'Sensor', asrAntenna);

Define the radar transmitter

asrPower = 25000; % [W]
asrGain = 32.8; % [dB]
asrTransmitter = phased.Transmitter('PeakPower',asrPower, ...

Define the radar receiver antenna array and he receiver pre-amplifier.

asrCollector = phased.Collector('OperatingFrequency', fc, ...
    'Sensor', asrAntenna);

asrReceiver = phased.ReceiverPreamp( 'SampleRate', asrSamplingFrequency, ...
    'Gain', 20, ...
    'NoiseMethod','Noise temperature',...

Define the approaching aircraft with radar cross section of 5m^2.

radarTarget = phased.RadarTarget(...
    'MeanRCS',5, ...

Define the radar signal propagation environment as free space.

radarEnv = phased.FreeSpace('TwoWayPropagation',true, ...
    'SampleRate', asrSamplingFrequency, ...
    'OperatingFrequency', fc, ...
    'PropagationSpeed', c);

Base Station Configuration

You can generate a range of 5G waveforms using 5G Toolbox. Waveform data for this example is loaded from the referenced .mat file.

load helperRadarNRInterferenceData.mat
bsSamplingFrequency = waveStruct.Fs;
bsWaveform = waveStruct.waveform;

You define a base station antenna array based on the specification in 3GPP TR 28.901:

bsArray = phased.NRRectangularPanelArray('Size', [3, 2, 2, 2], ...
    'Spacing',[0.5*lambda, 0.5*lambda, 3*lambda, 3*lambda]);

bsSteeringVec = phased.SteeringVector('SensorArray',bsArray, ...

% Gain per antenna element
bsTxPower = 9; % watts
bsTxGain = -8; % dB
bsNumArrayElements = prod(bsArray.Size);
bsTransmitter = phased.Transmitter(...
    'PeakPower',bsTxPower/bsNumArrayElements, ...

[bs2asrRange, bs2asrAngle] = rangeangle(asrPos,bsPos,rotz(180));

bsArrayWeights = bsSteeringVec(fc,bs2asrAngle(1)+1); 
bsArray.Taper = bsArrayWeights;

% Channel for base station signal
bsChannel = phased.ScatteringMIMOChannel('TransmitArray',bsArray,... 
    'ReceiveArrayMotionSource', 'Property', ...
    'ReceiveArrayPosition', asrPos, ...
    'ReceiveArrayOrientationAxes', asrAxes, ...

Received Signals Generation

You simulate the radar return and the 5G signal propagation to generate the received signal at the radar receiver.

Simulating the Radar Return

The simulation steps to transmit and receive the radar signals follow. Note that the antenna dish of ASR-11 normally rotates and this can be modeled as well but for this example, we consider the simplified case where the ASR-11 is pointing toward the base station. In reality, the scatterers defined in the MIMO channel would cause multipath effects and generate radar reflections. However, these reflections are cancelled by signal processing techniques such as moving target indicator (MTI) processing. To simplify the simulation without loss of generality, we model the radar signal propagation in free space.

asrSignal = asrWaveform();
asrAmplifiedSignal = asrTransmitter(asrSignal);

[asr2TragetRange, asr2TargetAngle] = ...

asrRadiatedSignal = asrRadiator(asrAmplifiedSignal, ...

asrPropagatedSignal = radarEnv(...
    asrRadiatedSignal, ...
    asrVel, ...

asrTargetReflection = radarTarget(asrPropagatedSignal);

asrCollectedSignal = asrCollector(asrTargetReflection, ...

Simulating the 5G Signal Propagation

The 5G signal is propagated form the base station to the radar system.

bsAmplifiedSignal = bsTransmitter(bsWaveform);
bsCollectedSignal = bsChannel(repmat(bsAmplifiedSignal,1,2*bsNumArrayElements));

Sampling Base Station and Radar Signals

You resample the received 5G signal to match the sampling frequency of the radar.

asrNsamples = length(asrSignal);
asrTvec = (0:asrNsamples-1)/asrSamplingFrequency;

bsNsamples = length(bsWaveform);
bsTvec = (0:bsNsamples-1)/bsSamplingFrequency;
bsCollectedSignal_Resampled = interp1( ...

ReceivedSignal = asrReceiver(asrCollectedSignal + bsCollectedSignal_Resampled );

Signal Processing

You apply matched filtering, time variying gain, and CFAR detection to detect the target in the received signal.

% Matched filter
coeff = getMatchedFilter(asrWaveform);
mf = phased.MatchedFilter('Coefficients',coeff,'GainOutputPort',true);
matchingdelay = size(coeff,1)-1;

% Time varying gain
rgates = asrTvec*3e8/2;
tvg = phased.TimeVaryingGain(...
    'ReferenceLoss', ...

% CFAR Detector
cfar = phased.CFARDetector('NumTrainingCells',50,'NumGuardCells',2);
cfar.ThresholdFactor = 'Custom';
cfar.CustomThresholdFactor = 6;
cfar.ThresholdOutputPort = true;

[sigp,Gmf] = mf(ReceivedSignal);
sigp = buffer(sigp(matchingdelay+1:end),size(sigp,1));

sigp = tvg(sigp);
[detected, th] = cfar(abs(sigp).^2,1:length(sigp));

figure; hold on;
xlabel('range (km)');

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Signal, Threshold.

5G Base Station Beamforming

To eliminate the interference, a beamformer is added to the base station. Since the location of the airport radar is fixed, a null can be placed at this direction.

% Calculate the steering vector for null directions
wn = bsSteeringVec(fc,bs2asrAngle(1));

% Calculate the steering vectors for lookout directions
bsLookAngle = 1; % Note: This angle should be different than the null angle.
wd = bsSteeringVec(fc,bsLookAngle);

% Compute the response of desired steering at null direction
rn = wn'*wd/(wn'*wn);

% Sidelobe canceler - remove the response at null direction
bsArrayWeights = wd-wn*rn;

bsChannel.TransmitArray.Taper = bsArrayWeights;


Simulating the 5G Signal Propagation after Beamforming

bsCollectedSignal_BF = bsChannel(repmat(bsAmplifiedSignal,1,2*bsNumArrayElements));
bsCollectedSignal_BF_Resampled = interp1( ...
ReceivedSignal_BF = asrReceiver(asrCollectedSignal + bsCollectedSignal_BF_Resampled);
[sigp_BF,Gmf_BF] = mf(ReceivedSignal_BF);
sigp_BF = buffer(sigp_BF(matchingdelay+1:end),size(sigp_BF,1));

sigp_BF = tvg(sigp_BF);
[detected_BF, th_BF] = cfar(abs(sigp_BF).^2,1:length(sigp_BF));

With beamforming in place, the signal level from the base station as seen by the radar is reduced such that it doesn’t interfere with the radar return.

figure; hold on;
xlabel('range (km)');

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Signal, Threshold, Detections.