Main Content

phased.MonopulseEstimator

Amplitude monopulse direction finding

Description

The phased.MonopulseEstimator System object™ implements a target direction estimator using the amplitude monopulse technique with arbitrary array geometry. The object works with the sum and difference channels that are output from the phased.MonopulseFeed System object or your own sum-difference channel generator. The output is an estimate of the target direction in azimuth and elevation. You can use the object for target direction estimation and target tracking.

To create a monopulse estimator:

  1. Create the phased.MonopulseEstimator object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?

Creation

Description

estimator = phased.MonopulseEstimator creates a monopulse estimator System object, estimator, with default property values.

estimator = phased.MonopulseEstimator(Name,Value) creates an estimator with each property Name set to a specified Value. You can specify additional name-value pair arguments in any order as (Name1,Value1,...,NameN,ValueN). Enclose each property name in single quotes.

Example: estimator = phased.MonopulseEstimator('SensorArray',phased.URA,'OperatingFrequency',300e6,'Coverage','Azimuth') sets the sensor array to a uniform rectangular array (URA) with default URA property values. The estimator estimates azimuth from the sum channel and azimuth difference channel. The estimator operates at 300 MHz.

Note

You can also create a phased.MonopulseEstimator object from a phased.MonopulseFeed object using the getMonopulseEstimator object function.

Properties

expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects.

Sensor array, specified as an array System object belonging to Phased Array System Toolbox. The sensor array can contain subarrays.

Example: phased.URA

Signal propagation speed, specified as a positive scalar. Units are in meters per second. The default propagation speed is the value returned by physconst('LightSpeed'). See physconst for more information.

Example: 3e8

Data Types: double

Operating frequency, specified as a positive scalar. Units are in Hz.

Example: 1e9

Data Types: double

Coverage of monopulse estimator, specified as '3D' or 'Azimuth'. When you set this property to '3D', the monopulse estimator uses the sum channel and both azimuth and elevation difference channels. When you set this property to 'Azimuth', the estimator uses the sum channel and the azimuth difference channel.

Squint angle, specified as a scalar or real-valued 2-by-1 vector. The squint angle is the separation angle or angles between the sum beam and the beams along the azimuth and elevation directions.

  • When you set the Coverage property to 'Azimuth', set the SquintAngle property to a scalar.

  • When you set the Coverage property to '3D', you can specify the squint angle as either a scalar or vector. If you set the SquintAngle property to a scalar, then the squint angle is the same along both the azimuth and elevation directions. If you set the SquintAngle property to a 2-by-1 vector, its elements specify the squint angle along the azimuth and elevation directions.

Example: [20;5]

Format of direction output, specified as 'Angle' or 'Angle offset'. When you set this property to 'Angle', the output angles are in the direction of the target. When you set this property to 'Angle offset', the output is the angle offset from the array steering direction.

Set this property to true to output the ratio of the sum and difference channels in the azimuth and elevation directions. Set this property to false to not output the ratios. The ratio is often used as an error control signal.

Data Types: logical

Usage

Description

angest = estimator(sumchan,diffazchan,steervec) returns the estimated target angle, angest, derived from the sum channel signal, sumchan, and the azimuth difference channel signal, diffazchan. steervec specifies the array steering direction. To use this syntax, set the Coverage property to 'Azimuth'.

angest = estimator(sumchan,diffazchan,diffelchan,steervec) also specifies the elevation difference channel signal, diffelchan. To use this syntax, set the Coverage property to '3D'.

example

[angest,dratio] = estimator(___) also returns the sum and difference ratio, dratio. To use this syntax, set the SumDifferenceRatioOutputPort property to true.

You can combine optional input arguments when their enabling properties are set. Optional inputs must be listed in the same order as the order of the enabling properties. For example:

 [angest,dratio] = estimator(X,steervec)

Input Arguments

expand all

Sum-channel signal, specified as a complex-valued N-by-1 column vector. N is the number of snapshots in the signal.

Data Types: double
Complex Number Support: Yes

Azimuth difference-channel signal, specified as a complex-valued N-by-1 column vector. N is the number of snapshots in the signal.

Data Types: double
Complex Number Support: Yes

Elevation difference-channel signal, specified as a complex-valued N-by-1 column vector. N is the number of snapshots in the signal.

Dependencies

To enable this output argument, set the Coverage property to '3D'.

Data Types: double
Complex Number Support: Yes

Array steering direction, specified as a scalar or real-valued 2-by-1 column vector.

  • When you set the Coverage property to 'Azimuth', the steering direction is a scalar and represents the azimuth steering angle.

  • When you set the Coverage property to '3D', the steering vector has the form [azimuthAngle; elevationAngle], where azimuthAngle is the azimuth steering angle and elevationAngle is the elevation steering angle.

Units are in degrees. Azimuth angles lie between –180° and 180°, inclusive and elevation angles must lie between –90° and 90°, inclusive.

Example: [40;10]

Data Types: double

Output Arguments

expand all

Estimated direction of target, returned as a real-valued 1-by-N vector or real-valued 2-by-N matrix. N is the number of snapshots in the signal. Units are in degrees.

  • When you set the Coverage property to 'Azimuth', angest is a real-valued 1-by-N vector. The elements contain the estimated target direction azimuth angle at each signal snapshot.

  • When you set the Coverage property to '3D', angest is a real-valued 2-by-N matrix. Each column contains the estimated target direction in the form [azimuthAngle;elevationAngle], where azimuthAngle is the estimated azimuth angle, and elevationAngle is the estimated elevation angle.

If you set the OutputFormat property to 'Angle offset', each element of the vector or matrix represent an offset from the steering vector direction.

Data Types: double

Ratio of sum and difference channels, returned as a real-valued 1-by-N vector or real-valued 2-by-N matrix. N is the number of snapshots in the signal. Units are in degrees.

  • When you set the Coverage property to 'Azimuth', dratio is a real-valued 1-by-N vector. The elements contain the ratio of the sum to azimuth difference channel at each signal snapshot.

  • When you set the Coverage property to '3D', dratio is a real-valued 2-by-N matrix. The elements of the first row contain the ratio of the sum to azimuth difference channel at each signal snapshot. The elements of the second row contain the ratio of the sum to elevation difference channel at each signal snapshot.

Dependencies

To enable this output argument, set the SumDifferenceRatioOutputPort property to true.

Data Types: double

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:

release(obj)

expand all

stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Examples

collapse all

After creating sum and difference channels, determine the direction of a target at approximately 24 degrees azimuth and 40 degrees elevation with respect to a 5-by-5 uniform rectangular array.

Create a monopulse feed system based on a URA.

fc = 200e6;
c = physconst('LightSpeed');
lambda = c/fc;
array = phased.URA('Size',[5 5],'ElementSpacing',lambda/2);
feed = phased.MonopulseFeed('SensorArray',array,'OperatingFrequency', ...
    fc,'Coverage','3D','AngleOutputPort',true);

Create a signal using a steering vector.

steervector = phased.SteeringVector('SensorArray',array);
x = steervector(feed.OperatingFrequency,[24;40]).';

Obtain the sum and difference channels and the estimated target angle.

[sumch,azch,elch,est_dir] = feed(x,[30;35]);
disp(est_dir)
   24.3705
   41.1997

Use a derived phased.MonopulseEstimator object to also obtain the target angle.

estimator = getMonopulseEstimator(feed);
est_dir = estimator(sumch,azch,elch,[30;35])
est_dir = 2×1

   24.3705
   41.1997

Determine the direction of a target using monopulse processing of signals arriving on a URA. The target echo is first detected before applying monopulse processing.

array = phased.URA('Size',4);
collect = phased.Collector('Sensor',array);
feed = phased.MonopulseFeed('SensorArray',array,'Coverage','3D');
estimator = phased.MonopulseEstimator('SensorArray',array,'Coverage','3D');

% Create a 100-sample random source signal with a single spike to simulate
% an echo.
x = sqrt(0.01/2)*(randn(100,1)+1i*randn(100,1));
x(20) = 1;
targetangle = [31;9];
rx = collect(x,targetangle);

Point the monopulse in a different direction from the target. Then, create the sum and difference angles.

steerangle = [30;10];
[sumch,azch,elch] = feed(rx,steerangle);

% Detect the target by finding the peak of the sum channel.
[~,idx] = max(abs(sumch));

% Estimate the arrival angle using a monopulse estimator.
est_dir = estimator(sumch(idx),azch(idx),elch(idx),steerangle)
est_dir = 2×1

   31.1307
    9.0132

References

[1] Mahafza, B.R. Radar System Analysis and Design Using Matlab. Boca Raton: Chapman and Hall/CRC, 2000.

Extended Capabilities

Version History

Introduced in R2018b