Example FERS Radar Simulation
Introduction
Bistatic radar systems can be fairly tricky to analyse. In this
example, we are examining the behaviour of a very simple bistatic radar
system with a target flying directly between the transmitting and
receiving stations.
1. Generating the Pulse
In this example, we will generate the pulse to be transmitted with
MATLAB. Other tools, such as IDL and Octave can be used with equal
success.
Generating the pulse in MATLAB is extremely simple.
%Generate a 50 micro second rect
pulse, sampled at 100MHz
Fs=1e8;
y=zeros(1, 100);
y(25:75)=1;
%FERS needs pulses to be slightly oversampled, so we take out the top
20% of the band (in a very non-optimal fashion)
Y=fft(y);
Y(40:60)=0;
y=real(ifft(Y));
%Now write the pulse to a ferscsv file
ferscsvwrite('pulse.csv', y, Fs);
The code above will create the pulse in a csv file, ready to be
imported into FERS.
2. Writing the FERS script
The next step is to create a FERS XML script to tell the simulator the
parameters of the system to be simulated.
In the first part of the file, the start and end time of the simulation
is specified, the propagation speed is set and the sample rate of the
simulation is set. Finally the simulator is told to export the raw
responses in CSV format, and the parameters of each response in XML
format.
<simulation
name="sim1">
<parameters>
<starttime>0</starttime>
<endtime>10</endtime>
<rate>1e8</rate>
<export binary="true"
xml="true"/>
</parameters>
The next part of the file imports the pulse we created in step 1, sets
the power to 1kW and the carrier frequency to 1GHz. The "timing"
block sets the jitter and frequency of timing sources used in the
system - it's not important for this system, but is extremely important
for networked and distributed radar systems. Lastly, the antenna (in
this case, a transducer) is defined, given a name and a radiation
pattern. The "isotropic" pattern is used here, for clarity.
<pulse
name="pulse1" type="file" filename="pulse.csv">
<power>1000</power>
<carrier>1e9</carrier>
</pulse>
<timing name="clock">
<frequency>10e6</frequency>
<jitter>0</jitter>
</timing>
<antenna name="ant1" pattern="isotropic">
</antenna>
Next, the transmitter is set up. It is attached to a platform which
controls it's motion and rotation. For this experiment, we want to
consider only one pulse per second, so we set the Pulse Repitition
Frequency to 1. The transmitter is situated at a position 500m along
the x axis from the origin, and does not move.
<platform
name="transmitter_site">
<motionpath>
<positionwaypoint>
<x>-500.00</x>
<y>0.0</y>
<altitude>0.0</altitude>
<time>0</time>
</positionwaypoint>
</motionpath>
<fixedrotation>
<startazimuth>0.0</startazimuth>
<startelevation>0</startelevation>
<azimuthrate>0</azimuthrate>
<elevationrate>0</elevationrate>
</fixedrotation>
<transmitter name="trans1"
type="pulsed" antenna="ant1" pulse="pulse1"
timing="clock">
<prf>1</prf>
</transmitter>
</platform>
The receiver setup is similar to the transmitter setup. The
range gate is defined to give a minimum round trip of 1.5km
and a maximum round trip range of 3km.
<platform name="receiver_site">
<motionpath>
<positionwaypoint>
<x>500.00</x>
<y>0.0</y>
<altitude>0.0</altitude>
<time>0</time>
</positionwaypoint>
</motionpath>
<fixedrotation>
<startazimuth>0.0</startazimuth>
<startelevation>0</startelevation>
<azimuthrate>0</azimuthrate>
<elevationrate>0</elevationrate>
</fixedrotation>
<receiver name="recv1"
type="pulsed" antenna="ant1"
timing="clock">
<window_skip>5e-6</window_skip>
<window_length>1e-5</window_length>
<prf>1</prf>
</receiver>
</platform>
Next, the target is defined. The target starts 1.5km away, overflys the
site 5s later and proceeds along the same path at a constant speed. The
radar cross section of the target is set to 100m
2.
<platform
name="aeroplane">
<motionpath
interpolation="cubic">
<positionwaypoint>
<x>0.0</x>
<y>-1500.0</y>
<altitude>1000</altitude>
<time>0</time>
</positionwaypoint>
<positionwaypoint>
<x>0.0</x>
<y>0.0</y>
<altitude>1000.0</altitude>
<time>5</time>
</positionwaypoint>
<positionwaypoint>
<x>0.0</x>
<y>1500.0</y>
<altitude>1000.0</altitude>
<time>10</time>
</positionwaypoint>
</motionpath>
<fixedrotation>
<startazimuth>0.0</startazimuth>
<startelevation>0.0</startelevation>
<azimuthrate>0</azimuthrate>
<elevationrate>0</elevationrate>
</fixedrotation>
<target name="wings">
<rcs
type="isotropic">
<value>100</value>
</rcs>
</target>
</platform>
</simulation>
3. Running The Simulator
Running FERS is extremely simple - just call the executable with the
script you have just defined.
./fers example.fersxml
4. Viewing the Results
In this example, FERS exports the results in the HDF5 data format,
which can be very easily read into MATLAB, or IDL. FERS comes with a
small MATLAB program which makes importing FERS results simple.
%Load I and Q into MATLAB
[I Q times] = loadfersHDF5('recv1.h5');
%Calculate the pulse power
P=sqrt(I.^2+Q.^2);
%Plot the pulses onto a nice looking graph
waterfall(P);

The result graph has response strength on the vertical axis. The 1/x
4
relationship between range and return strength can easily be seen, as
can the quadratic relationship between range and return type.
5. Conclusion
This example shows only a few of the capabilities of FERS, but should
give an idea of what FERS is and how it can be used for design support
and investigating different properties of radar and sonar systems.
The simulation performed here is very simple, and could easily be done
on paper, but it demonstrates that FERS is easy to use, even for small
simulations.