Sum and difference monopulse for ULA
SumDifferenceMonopulseTracker object implements
a sum and difference monopulse algorithm on a uniform linear array.
To estimate the direction of arrival (DOA):
Starting in R2016b, instead of using the
to perform the operation defined by the System object™, you can
call the object with arguments, as if it were a function. For example,
= step(obj,x) and
y = obj(x) perform
H = phased.SumDifferenceMonopulseTracker creates
a tracker System object,
H. The object uses
sum and difference monopulse algorithms on a uniform linear array
H = phased.SumDifferenceMonopulseTracker( creates
a ULA monopulse tracker object,
H, with each
specified property Name set to the specified Value. You can specify
additional name-value pair arguments in any order as (
Handle to sensor array
Specify the sensor array as a handle. The sensor array must
Signal propagation speed
Specify the propagation speed of the signal, in meters per second, as a positive scalar. You can specify this property as single or double precision.
Default: Speed of light
System operating frequency
Specify the operating frequency of the system in hertz as a positive scalar. The default value corresponds to 300 MHz. You can specify this property as single or double precision.
Number of phase shifter quantization bits
The number of bits used to quantize the phase shift component of beamformer or steering vector weights. Specify the number of bits as a non-negative integer. A value of zero indicates that no quantization is performed. You can specify this property as single or double precision.
|step||Perform monopulse tracking using ULA|
|Common to All System Objects|
Allow System object property value changes
Find Target Direction Using Monopulse Tracker
Determine the direction of a target at a 60.1° broadside angle to a ULA starting with an approximate direction of 60°
array = phased.ULA('NumElements',4); steervec = phased.SteeringVector('SensorArray',array); tracker = phased.SumDifferenceMonopulseTracker('SensorArray',array); x = steervec(tracker.OperatingFrequency,60.1).'; est_dir = tracker(x,60)
est_dir = 60.1000
The sum-and-difference monopulse algorithm is used to the estimate the arrival direction of a narrowband signal impinging upon a uniform linear array (ULA). First, compute the conventional response of an array steered to an arrival direction φ0. For a ULA, the arrival direction is specified by the broadside angle. To specify that the maximum response axis (MRA) point towards the φ0 direction, set the weights to be
where d is the element spacing and k = 2π/λ is the wavenumber. An incoming plane wave, coming from any arbitrary direction φ, is represented by
The conventional response of this array to any incoming plane wave is given by and is shown in the polar plot below as the Sum Pattern. The array is designed to steer towards φ0 = 30°.
The second pattern, called the Difference Pattern, is obtained by using phased-reversed weights. The weights are determined by phase-reversing the latter half of the conventional steering vector. For an array with an even number of elements, the phase-reversed weights are
(For an array with an odd number of elements, the middle weight is set to zero). The multiplicative factor –i is used for convenience. The response of the difference array to the incoming vector is
This figure shows the sum and difference beam patterns of a four-element uniform linear array (ULA) steered 30° from broadside. The array elements are spaced at one-half wavelength. The sum pattern shows that the array has its maximum response at 30° and the difference pattern has a null at 30°.
The monopulse response curve is obtained by dividing the difference pattern by the sum pattern and taking the real part.
To use the monopulse response curve to obtain the arrival angle, φ, of a narrowband signal, x, compute
and invert the response curve, φ = R-1(z), to obtain φ.
The response curve is not generally single valued and can only be inverted when arrival angles lie within the main lobe where it is single valued This figure shows the monopulse response curve within the main lobe of the four-element ULA array.
There are two desirable properties of the monopulse response curve. The first is that it have a steep slope. A steep slope ensures robustness against noise. The second property is that the mainlobe be as wide as possible. A steep slope is ensure by a larger array but leads to a smaller mainlobe. You will need to trade off one property with the other.
For further details, see .
This System object supports single and double precision for input data, properties, and arguments. If
the input data
X is single precision, the output data is single precision.
If the input data
X is double precision, the output data is double
precision. The precision of the output is independent of the precision of the properties and
 Seliktar, Y. Space-Time Adaptive Monopulse Processing. Ph.D. Thesis. Georgia Institute of Technology, Atlanta, 1998.
 Rhodes, D. Introduction to Monopulse. Dedham, MA: Artech House, 1980.
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
See System Objects in MATLAB Code Generation (MATLAB Coder).
Introduced in R2011a