Você está na página 1de 8

Designing a Basic Monostatic Pulse Radar

This example shows how to design a monostatic pulse radar to estimate the
target range. A monostatic radar has the transmitter colocated with
the receiver. The transmitter generates a pulse which hits the target and
produces an echo received by the receiver. By measuring the location of
the echoes in time, we can estimate the range of a target.

%
%
%
%
%
%
%
%
%
%
%
%
%
%
%

This example focuses on a pulse which can achieve a set of design


specifications.It outlines
the steps to translate design specifications, such as the probability of
detection and the range resolution, into radar system parameters, such as
the transmit power and the pulse width. It also models the environment
and targets to synthesize the received signal. Finally, signal processing
techniques are applied to the received signal to detect the ranges of the
targets.
Copyright 2007-2015 The MathWorks, Inc.

%% Design Specifications
%
% The design goal of this pulse radar system is to detect non-fluctuating
% targets with at least one square meter radar cross section (RCS) at a
% distance up to 5000 meters from the radar with a range resolution of 50
% meters. The desired performance index is a probability of detection (Pd)
% of 0.9 and probability of false alarm (Pfa) below 1e-6. Since coherent
% detection requires phase information and, therefore is more
% computationally expensive, we adopt a noncoherent detection scheme. In
% addition, this example assumes a free space environment.
pd = 0.9;
pfa = 1e-6;
max_range = 5000;
range_res = 50;
tgt_rcs = 1;

%
%
%
%
%

Probability of detection
Probability of false alarm
Maximum unambiguous range
Required range resolution
Required target radar cross section

%% Monostatic Radar System Design


% We need to define several characteristics of the radar system such as the
% waveform, the receiver, the transmitter, and the antenna used to radiate
% and collect the signal.
%
% *Waveform*
%
% We choose a rectangular waveform in this example. The desired range
% resolution determines the bandwidth of the waveform, which, in the case
% of a rectangular waveform, determines the pulse width.
%
% Another important parameter of a pulse waveform is the pulse repetition
% frequency (PRF). The PRF is determined by the maximum unambiguous range.
prop_speed = physconst('LightSpeed');
pulse_bw = prop_speed/(2*range_res);
pulse_width = 1/pulse_bw;
prf = prop_speed/(2*max_range);
fs = 2*pulse_bw;
hwav = phased.RectangularWaveform(...
'PulseWidth',1/pulse_bw,...
'PRF',prf,...
'SampleRate',fs);

%
%
%
%
%

Propagation speed
Pulse bandwidth
Pulse width
Pulse repetition frequency
Sampling rate

%%
% Note that we set the sampling rate as twice the bandwidth.
%
% *Receiver Noise Characteristics*
%
% We assume that the only noise present at the receiver is the thermal
% noise, so there is no clutter involved in this simulation. The power of
% the thermal noise is related to the receiver bandwidth. The receiver's
% noise bandwidth is set to be the same as the bandwidth of the waveform.
% This is often the case in real systems. We also assume that the receiver
% has a 20 dB gain and a 0 dB noise figure.
noise_bw = pulse_bw;
hrx = phased.ReceiverPreamp(...
'Gain',20,...
'NoiseFigure',0,...
'SampleRate',fs,...
'EnableInputPort',true);
%%
% Note that because we are modeling a monostatic radar, the
% receiver cannot be turned on until the transmitter is off. Therefore, we
% set the EnableInputPort property to true so that a synchronization signal
% can be passed from the transmitter to the receiver.
%
% *Transmitter*
%
% The most critical parameter of a transmitter is the peak transmit power.
% The required peak power is related to many factors including the maximum
% unambiguous range, the required SNR at the receiver, and the pulse width
% of the waveform. Among these factors, the required SNR at the receiver is
% determined by the design goal of Pd and Pfa, as well as the detection
% scheme implemented at the receiver.
%
% The relation between Pd, Pfa and SNR can be best represented by a
% receiver operating characteristics (ROC) curve. We can generate the curve
% where Pd is a function of Pfa for varying SNRs using the following
% command
snr_db = [-inf, 0, 3, 10, 13];
rocsnr(snr_db,'SignalType','NonfluctuatingNoncoherent');
%%
% The ROC curves show that to satisfy the design goals of Pfa = 1e-6 and Pd
% = 0.9, the received signal's SNR must exceed 13 dB. This is a fairly high
% requirement and is not very practical. To make the radar system more
% feasible, we can use a pulse integration technique to reduce the required
% SNR. If we choose to integrate 10 pulses, the curve can be generated as
num_pulse_int = 10;
rocsnr([0 3 5],'SignalType','NonfluctuatingNoncoherent',...
'NumPulses',num_pulse_int);
%%
% We can see that the required power has dropped to around 5 dB. Further
% reduction of SNR can be achieved by integrating more pulses, but the
% number of pulses available for integration is normally limited due to the
% motion of the target or the heterogeneity of the environment.
%

%
%
%
%
%
%

The approach above reads out the SNR value from the curve, but it is
often desirable to calculate only the required value. For the noncoherent
detection scheme, the calculation of the required SNR is, in theory,
quite complex. Fortunately, there are good approximations available, such
as Albersheim's equation. Using Albersheim's equation, the required SNR
can be derived as

snr_min = albersheim(pd, pfa, num_pulse_int)


%%
% Once we obtain the required SNR at the receiver, the peak power at the
% transmitter can be calculated using the radar equation. Here we assume
% that the transmitter has a gain of 20 dB.
%
% To calculate the peak power using the radar equation, we also need to
% know the wavelength of the propagating signal, which is related to the
% operating frequency of the system. Here we set the operating frequency to
% 10 GHz.
tx_gain = 20;
fc = 10e9;
lambda = prop_speed/fc;
peak_power = radareqpow(lambda,max_range,snr_min,pulse_width,...
'RCS',tgt_rcs,'Gain',tx_gain)
%%
% Note that the resulting power is about 5 kw, which is very reasonable. In
% comparison, if we had not used the pulse integration technique, the
% resulting peak power would have been 33 kw, which is huge.
%%
% With all this information, we can configure the transmitter.
htx = phased.Transmitter(...
'Gain',tx_gain,...
'PeakPower',peak_power,...
'InUseOutputPort',true);
%%
% Again, since this example models a monostatic radar system, the
% InUseOutputPort is set to true to output the status of the transmitter.
% This status signal can then be used to enable the receiver.
%
% *Radiator and Collector*
%
% In a radar system, the signal propagates in the form of an
% electromagnetic wave. Therefore, the signal needs to be radiated and
% collected by the antenna used in the radar system. This is where the
% radiator and the collector come into the picture.
%
% In a monostatic radar system, the radiator and the collector share the
% same antenna, so we will first define the antenna. To simplify the
% design, we choose an isotropic antenna. Note that the antenna needs to be
% able to work at the operating frequency of the system (10 GHz), so we set
% the antenna's frequency range to 5-15 GHz.
%
% We assume that the antenna is stationary.

hant = phased.IsotropicAntennaElement(...
'FrequencyRange',[5e9 15e9]);
hantplatform = phased.Platform(...
'InitialPosition',[0; 0; 0],...
'Velocity',[0; 0; 0]);
%%
% With the antenna and the operating frequency, we define both the radiator
% and the collector.
hradiator = phased.Radiator(...
'Sensor',hant,...
'OperatingFrequency',fc);
hcollector = phased.Collector(...
'Sensor',hant,...
'OperatingFrequency',fc);
%%
% This completes the configuration of the radar system. In the following
% sections, we will define other entities, such as the target and the
% environment that are needed for the simulation. We will then simulate the
% signal return and perform range detection on the simulated signal.
%% System Simulation
% *Targets*
%
% To test our radar's ability to detect targets, we must define the targets
% first. Let us assume that there are 3 stationary, non-fluctuating targets
% in space. Their positions and radar cross sections are given below.
htarget{1} = phased.RadarTarget(...
'MeanRCS',1.6,...
'OperatingFrequency',fc);
htargetplatform{1} = phased.Platform(...
'InitialPosition',[2024.66; 0; 0]);
htarget{2} = phased.RadarTarget(...
'MeanRCS',2.2,...
'OperatingFrequency',fc);
htargetplatform{2} = phased.Platform(...
'InitialPosition',[3518.63; 0; 0]);
htarget{3} = phased.RadarTarget(...
'MeanRCS',1.05,...
'OperatingFrequency',fc);
htargetplatform{3} = phased.Platform(...
'InitialPosition',[3845.04; 0; 0]);
%%
% *Propagation Environment*
%
% To simulate the signal, we also need to define the propagation channel
% between the radar system and each target.
htargetchannel{1} = phased.FreeSpace(...
'SampleRate',fs,...
'TwoWayPropagation',true,...
'OperatingFrequency',fc);

htargetchannel{2} = phased.FreeSpace(...
'SampleRate',fs,...
'TwoWayPropagation',true,...
'OperatingFrequency',fc);
htargetchannel{3} = phased.FreeSpace(...
'SampleRate',fs,...
'TwoWayPropagation',true,...
'OperatingFrequency',fc);
%%
% Because this example uses a monostatic radar system, the channels are set
% to simulate two way propagation delays.
%
% *Signal Synthesis*
%
% We are now ready to simulate the entire system.
%
% The synthesized signal is a data matrix with the fast time (time within
% each pulse) along each column and the slow time (time between pulses)
% along each row. To visualize the signal, it is helpful to define both
% the fast time grid and slow time grid.
fast_time_grid = unigrid(0,1/fs,1/prf,'[)');
slow_time_grid = (0:num_pulse_int-1)/prf;
%%
% The following loop simulates 10 pulses of the receive signal.
%
% We set the seed for the noise generation in the receiver so that we can
% reproduce the same results.
hrx.SeedSource = 'Property';
hrx.Seed = 2007;
rx_pulses = zeros(numel(fast_time_grid),num_pulse_int); % pre-allocate
for m = 1:num_pulse_int
[ant_pos,ant_vel] = step(hantplatform,1/prf); % Update antenna position
x = step(hwav);

% Generate pulse

[s, tx_status] = step(htx,x);

% Transmit pulse

for n = 3:-1:1

% For each target

[tgt_pos(:,n),tgt_vel(:,n)] = step(...
htargetplatform{n},1/prf);

% Update target position

[tgt_rng(n), tgt_ang(:,n)] = rangeangle(...


tgt_pos(:,n), ant_pos);
% Calculate range/angle
tsig(:,n) = step(hradiator,...
s,tgt_ang(:,n));
tsig(:,n) = step(htargetchannel{n},...
tsig(:,n),ant_pos,tgt_pos(:,n),...
ant_vel,tgt_vel(:,n));

% Radiate toward target

% Propagate pulse

rsig(:,n) = step(htarget{n},tsig(:,n));

% Reflect off target

end
rsig = step(hcollector,rsig,tgt_ang);

% Collect all echoes

rx_pulses(:,m) = step(hrx,...
rsig,~(tx_status>0));

% Receive signal and form


% data matrix

end
%% Range Detection
% *Detection Threshold*
%
% The detector compares the signal power to a given threshold. In radar
% applications, the threshold is often chosen so that the Pfa is below a
% certain level. In this case, we assume the noise is white Gaussian and
% the detection is noncoherent. Since we are also using 10 pulses to do
% the pulse integration, the signal power threshold is given by
npower = noisepow(noise_bw,hrx.NoiseFigure,hrx.ReferenceTemperature);
threshold = npower * db2pow(npwgnthresh(pfa,num_pulse_int,'noncoherent'));
%%
% We plot the first two received pulses with the threshold
num_pulse_plot = 2;
helperRadarPulsePlot(rx_pulses,threshold,...
fast_time_grid,slow_time_grid,num_pulse_plot);
%%
% The threshold in these figures is for display purpose only. Note that
% the second and third target returns are much weaker than the first return
% because they are farther away from the radar. Therefore, the received
% signal power is range dependent and the threshold is unfair to targets
% located at different ranges.
%
% *Matched Filter*
%
% The matched filter offers a processing gain which improves the detection
% threshold. It convolves the received signal with a local, time-reversed,
% and conjugated copy of transmitted waveform. Therefore, we must specify
% the transmitted waveform when creating our matched filter. The received
% pulses are first passed through a matched filter to improve the SNR
% before doing pulse integration, threshold detection, etc.
matchingcoeff = getMatchedFilter(hwav);
hmf = phased.MatchedFilter(...
'Coefficients',matchingcoeff,...
'GainOutputPort',true);
[rx_pulses, mfgain] = step(hmf,rx_pulses);
%%
% The matched filter introduces an intrinsic filter delay so that the
% locations of the peak (the maximum SNR output sample) are no longer
% aligned with the true target locations. To compensate for this delay, in
% this example, we will move the output of the matched filter forward and
% pad the zeros at the end. Note that in real system, because the data gets
% connected continuously, there is really no end of it.
matchingdelay = size(matchingcoeff,1)-1;
rx_pulses = buffer(rx_pulses(matchingdelay+1:end),size(rx_pulses,1));

%%
% The threshold is then increased by the matched filter processing gain.
threshold = threshold * db2pow(mfgain);
%%
% The following plot shows the same two pulses after they pass through the
% matched filter.
helperRadarPulsePlot(rx_pulses,threshold,...
fast_time_grid,slow_time_grid,num_pulse_plot);
%%
% After the matched filter stage, the SNR is improved. However, because
% the received signal power is dependent on the range, the return of a
% close target is still much stronger than the return of a target farther
% away. Therefore, as the above figure shows, the noise from a close range
% bin also has a significant chance of surpassing the threshold and
% shadowing a target farther away. To ensure the threshold is fair to all
% the targets within the detectable range, we can use a time varying gain
% to compensate for the range dependent loss in the received echo.
%
% To compensate for the range dependent loss, we first calculate the range
% gates corresponding to each signal sample and then calculate the free
% space path loss corresponding to each range gate. Once that information
% is obtained, we apply a time varying gain to the received pulse so that
% the returns are as if from the same reference range (the maximum
% detectable range).
range_gates = prop_speed*fast_time_grid/2;
htvg = phased.TimeVaryingGain(...
'RangeLoss',2*fspl(range_gates,lambda),...
'ReferenceLoss',2*fspl(max_range,lambda));
rx_pulses = step(htvg,rx_pulses);
%%
% Now let's plot the same two pulses after the range normalization
helperRadarPulsePlot(rx_pulses,threshold,...
fast_time_grid,slow_time_grid,num_pulse_plot);
%%
% The time varying gain operation results in a ramp in the noise floor.
% However, the target return is now range independent. A constant
% threshold can now be used for detection across the entire detectable
% range.
%%
% Notice that at this stage, the threshold is above the maximum power level
% contained in each pulse. Therefore, nothing can be detected at this
% stage yet. We need to perform pulse integration to ensure the power of
% returned echoes from the targets can surpass the threshold while leaving
% the noise floor below the bar. This is expected since it is the pulse
% integration which allows us to use the lower power pulse train.
%
% *Noncoherent Integration*
%
% We can further improve the SNR by noncoherently integrating (video
% integration) the received pulses.

rx_pulses = pulsint(rx_pulses,'noncoherent');
helperRadarPulsePlot(rx_pulses,threshold,...
fast_time_grid,slow_time_grid,1);
%%
% After the video integration stage, the data is ready for the final
% detection stage. It can be seen from the figure that all three echoes
% from the targets are above the threshold, and therefore can be detected.
%
% *Range Detection*
%
% Finally, the threshold detection is performed on the integrated pulses.
% The detection scheme identifies the peaks and then translates their
% positions into the ranges of the targets.
[~,range_detect] = findpeaks(rx_pulses,'MinPeakHeight',sqrt(threshold));
%%
% The true ranges and the detected ranges of the targets are shown below:
true_range = round(tgt_rng)
range_estimates = round(range_gates(range_detect))
%%
% Note that these range estimates are only accurate up to the range
% resolution (50 m) that can be achieved by the radar system.
%% Summary
% In this example, we designed a radar system based on a set of given
% performance goals. From these performance goals, many design parameters
% of the radar system were calculated. The example also showed how to use
% the designed radar to perform a range detection task. In this example,
% the radar used a rectangular waveform. Interested readers can refer to
% <ChirpRangeEstimationExample.html Waveform Design to Improve Performance
% of an Existing Radar System> for an example using a chirp waveform.
displayEndOfDemoMessage(mfilename)

Você também pode gostar