This example shows how to apply the basic toolbox workflow to
the following scenario: Assume you have a single isotropic antenna
operating at 4 GHz. Assume the antenna is located at the origin of
your global coordinate system. There is a target with a nonfluctuating
radar cross section of 0.5 square meters initially located at
5000; 0]. The target moves with a constant velocity vector
[-15;-10;0]. Your antenna transmits ten rectangular
pulses with a duration of 1 microsecond at a pulse repetition frequency
(PRF) of 5 kHz. The pulses propagate to the target, reflect off the
target, propagate back to the antenna, and are collected by the antenna.
The antenna operates in a monostatic mode, receiving only when the
transmitter is inactive.
hwav = phased.RectangularWaveform('PulseWidth',1e-6,... 'PRF',5e3,'OutputFormat','Pulses','NumPulses',1);
See Rectangular Pulse Waveforms for more detailed examples on building waveform models.
To model the antenna described in Radar Scenario, use
Set the operating frequency range of the antenna to [1,10] GHz. The
isotropic antenna radiates equal energy for azimuth angles from –180
to 180 degees and elevation angles from –90 to 90 degrees.
hant = phased.IsotropicAntennaElement('FrequencyRange',... [1e9 10e9]);
To model the target described in Radar Scenario, use
phased.RadarTarget. The target has a nonfluctuating
RCS of 0.5 square meters and the waveform incident on the target has
a carrier frequency of 4 GHz. The waveform reflecting off the target
propagates at the speed of light. Parameterize this information in
defining your target.
htgt = phased.RadarTarget('Model','Nonfluctuating',... 'MeanRCS',0.5,'PropagationSpeed',physconst('LightSpeed'),... 'OperatingFrequency',4e9);
The antenna is stationary in this scenario and is located at
the origin of the global coordinate system. The target is initially
[7000; 5000; 0] and moves with a constant
velocity vector of
htxplat = phased.Platform('InitialPosition',[0;0;0],... 'Velocity',[0;0;0],'OrientationAxes',[1 0 0;0 1 0;0 0 1]); htgtplat = phased.Platform('InitialPosition',[7000; 5000; 0],... 'Velocity',[-15;-10;0]);
For definitions and conventions regarding global and local coordinates, see Global and Local Coordinate Systems.
rangeangle to determine
the range and angle between the antenna and the target.
[tgtrng,tgtang] = rangeangle(htgtplat.InitialPosition,... htxplat.InitialPosition);
See Motion Modeling in Phased Array Systems for more details on modeling motion.
To model the transmitter specifications, use
A key parameter in modeling a transmitter is the peak transmit power.
To determine the peak transmit power, assume that the desired probability
of detection is 0.9 and the maximum tolerable false-alarm probability
is 10–6. Assume that the ten rectangular
pulses are noncoherently integrated at the receiver. You can use
albersheim to determine the required
signal-to-noise ratio (SNR).
Pd = 0.9; Pfa = 1e-6; numpulses = 10; SNR = albersheim(Pd,Pfa,10);
The required SNR is approximately 5 dB. Assume you want to set
the peak transmit power in order to achieve the required SNR for your
target at a range of up to 15 km. Assume that the transmitter has
a 20 dB gain. You can use
determine the required peak transmit power.
maxrange = 1.5e4; lambda = physconst('LightSpeed')/4e9; tau = hwav.PulseWidth; Pt = radareqpow(lambda,maxrange,SNR,tau,'RCS',0.5,'Gain',20);
The required peak transmit power is approximately 45 kilowatts.
To be conservative, use a peak power of 50 kilowatts in modeling your
transmitter. To maintain a constant phase in the pulse waveforms,
CoherentOnTransmit property to
Because you are operating the transmitter in a monostatic (transmit-receive)
mode, set the
InUseOutputPort property to
keep a record of the transmitter status.
htx = phased.Transmitter('PeakPower',50e3,'Gain',20,... 'LossFactor',0,'InUseOutputPort',true,... 'CoherentOnTransmit',true);
To model waveform radiation from the array, use
To model narrowband signal collection at the array, use
For wideband signal collection, use
In this example, the pulse satisfies the narrowband assumption
around the carrier frequency of 4 GHz. For the value of the
use the handle for the isotropic antenna. In
Wavefront property to
the waveform incident on the antenna is a plane wave.
hrad = phased.Radiator('Sensor',hant,... 'PropagationSpeed',physconst('LightSpeed'),... 'OperatingFrequency',4e9); hcol = phased.Collector('Sensor',hant,... 'PropagationSpeed',physconst('LightSpeed'),... 'Wavefront','Plane','OperatingFrequency',4e9);
To model the receiver in Radar Scenario, use
In the receiver, you specify the noise figure and reference temperature,
which are key contributors to the internal noise of your system. In
this example, set the noise figure to 2 dB and the reference temperature
to 290 degrees kelvin. Seed the random number generator for reproducible
hrec = phased.ReceiverPreamp('Gain',20,'NoiseFigure',2,... 'ReferenceTemperature',290,'SampleRate',1e6,... 'EnableInputPort',true,'SeedSource','Property','Seed',1e3);
See Receiver Preamp for more details.
To model the propagation environment in Radar Scenario, use
phased.FreeSpace. You can model one-way
and two-propagation by setting the
In this example, set this property to
model one-way propagation.
hspace = phased.FreeSpace(... 'PropagationSpeed',physconst('LightSpeed'),... 'OperatingFrequency',4e9,'TwoWayPropagation',false,... 'SampleRate',1e6);
See Free Space Path Loss for more details.
Having parameterized all the necessary components for the model outlined in Radar Scenario, you are ready to generate the pulses, propagate the pulses to and from the target, and collect the echoes.
The following code prepares for the main simulation loop.
% Time step between pulses T = 1/hwav.PRF; % Get antenna position txpos = htxplat.InitialPosition; % Allocate array for received echoes rxsig = zeros(hwav.SampleRate*T,numpulses);
You can execute the main simulation loop with the following code:
for n = 1:numpulses % Update the target position [tgtpos,tgtvel] = step(htgtplat,T); % Get the range and angle to the target [tgtrng,tgtang] = rangeangle(tgtpos,txpos); % Generate the pulse sig = step(hwav); % Transmit the pulse. Output transmitter status [sig,txstatus] = step(htx,sig); % Radiate the pulse toward the target sig = step(hrad,sig,tgtang); % Propagate the pulse to the target in free space sig = step(hspace,sig,txpos,tgtpos,[0;0;0],tgtvel); % Reflect the pulse off the target sig = step(htgt,sig); % Propagate the echo to the antenna in free space sig = step(hspace,sig,tgtpos,txpos,tgtvel,[0;0;0]); % Collect the echo from the incident angle at the antenna sig = step(hcol,sig,tgtang); % Receive the echo at the antenna when not transmitting rxsig(:,n) = step(hrec,sig,~txstatus); end
Noncoherently integrate the received echoes, create a vector of range gates, and plot the result. The red vertical line on the plot marks the range of the target.
rxsig = pulsint(rxsig,'noncoherent'); t = unigrid(0,1/hrec.SampleRate,T,'[)'); rangegates = (physconst('LightSpeed')*t)/2; plot(rangegates,rxsig); hold on; xlabel('Meters'); ylabel('Power'); ylim = get(gca,'YLim'); plot([tgtrng,tgtrng],[0 ylim(2)],'r');