Radar Beamforming to track target

The Matlab phased array toolbox is a collection of many interesting algorithms and functions. With so many tools at your disposal, the phased array toolbox lets us build a complete end to end radar system. I tried the phased array toolbox for the first time to build a pulsed radar which can determine approximate azimuth angle of the target with respect to the radar.

Setting up the stage

In order to simulate a radar system in Matlab, you need to have everything defined. For example, the transmitter, the antenna system, the target itself and so on. Let us define a few things related to the radar before we proceed.

System specifications

Our operating frequency will be 9850MHz. The transmit power will be set at 5W and receiver preamplifier gain set to 10dB with a noise figure of 5. Additionally, we shall be transmitting a pulse with Linear frequency modulation for pulse compression. The LFM pulse will have sweep bandwidth of 5MHz. The radar pulse repetition frequency would be set to 10kHz resulting in a maximum unambiguous range of 15km.

\(R_{max}  = \frac{c}{2 \times PRF}\)

Our pulse width will be equal to \(1\mu s\) resulting in a range resolution of,

\(\Delta R = \frac{c\times pulse width}{2} = 150 meters\)

Since we are going to transmit an LFM pulse, our range resolution increases. Higher the sweep bandwidth, higher is the pulse compression ratio (PCR) and better the range resolution gets.

\(\Delta R = \frac{c}{2 \times B} = 30 meters\)

A staggering improvement in range resolution by a factor of 5. Further in this article we will also see how LFM improves the detection probability as compared to an unmodulated pulse.

The antennas

We begin by setting up a simple array antenna. In this example, we will use a Uniform Linear Array having 4 radiating elements. Below, we see the arrangement of the antenna array as well as its radiation pattern.

Uniform linear array having 4 elements

uniform linear array beamforming

Radiation pattern of the uniform linear array

Next, we set up the transmit waveform as follows.

Along with the waveform, we also initialize our matched filter coefficients in this code.

Next, we place a target parameters using the following code,

The target is set to have an RCS of 0.1 square meters located at an azimuth angle of 0.25 radians (~14.3 degrees) and 1.2 km away.

When we transmit our radar pulse, it propagates through the free space, hits the target and returns. The electromagnetic waves decay at a rate governed by square law. Also, the channel behaves differently for different frequencies. Therefore, we need to set the channel parameters as well to get a realistic result.

Transmitting the pulses

Most of the things that we need are ready for action. We shall send 64 pulses and receive them to form a radar data cube.

At the end of the loop, we end up with a 3-dimensional matrix containing data from 4 receive channels with a sample length of 10000 and we do this for 64 pulses.

Based on this data cube, we can steer the receiver channels to look in certain direction. For example, we can digitally focus on \(30^o\) azimuth and observe the data in that direction. Let us try that.

First, we initialize a beamformer object to steer the main lobe towards \(30^o\) azimuth. Apply the beamforming over one pulse width data samples and observe it's output.

beam steering radar mimo

Steered beam towards 30 degrees azimuth

beam forming in matlab radar

Data after steering the beam towards 30 degrees Azimuth.

Clearly, the pulse is hardly visible in this noisy plot. Based on what I said earlier, the modulated pulse helps increase the probability of target detection. By running a matched filter over this data, we will see if we can extract anything out of this.

Matched filtering definitely helped us detect the reflected pulse embedded in noise

Now, let us steer the beam to 15 degrees (close to where our target is located) and observe the antenna pattern as well as the processed data output. Ideally, we should see that the detected pulse has a higher amplitude as compared to when we looked towards \(30^o\) azimuth.

15 degrees antenna radiation pattern

mimo radar beam steering example

Raw radar data when we are observing 15 degrees azimuth

Matched filtering on raw data

Comparing the raw data, we can see an increased amplitude of the reflected pulse when we beamform at \(15^o\) azimuth. Correspondingly, the matched filter output also shows a better peak amplitude.

Basic tracking

A very basic target tracking algorithm works by transmitting two pulses which are slightly offset in either azimuth or elevation (whichever direction you want to track, most of the times both directions). This technique is known as lobing. We can do a similar thing digitally over our radar data cube. The only thing required is that the target should fall in our main lobe.

First, I did a steered the beam towards \(20^o\) and then another beam \(4^o\) apart. We collect the data from both the beams, run a matched filter over it and observe the obtained target peaks as follows.

digital tracking of target

The two beams result in a difference in amplitudes of received pulses.

Had the targets been centred in the main lobe (boresight), we would see equal amplitudes. Over the next few iterations, we try to minimize the difference by increasing the beam azimuth angle.

Remember that we are not changing the axis of our radar platform anywhere but simply working on the radar data cube we obtained previously.

Eventually, the two target peaks become equal and finally end up with Az_ value close to the actual target position.

beamforming mimo target tracking

Az_ is the estimated target position and tgtAng is the actual target position


I am just now learning concepts of MIMO, phased array radars and target tracking. I toyed around the Matlab phased array toolbox to get my hands dirty. There is a Monopulse target tracking algorithm which is widely used and my next post could be about that. It allows us to accurately track moving targets.

Additionally, we can also steer the transmit beam and obtain much better results. That is when we would enter the realm of active electronic scan arrays.

For those who want the code, email me.


Salil is an electronics enthusiast working on various RF and Microwave systems. In his free time he writes on the blog, talks over ham radio or builds circuits. He has Yaesu FT2900R VHF transceiver, FT450D HF transceiver and a TYT UV8000E Handheld transceiver.

You may also like...

1 Response

  1. Neha says:

    Really interesting….gr8 job Master Salil

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.