Main Content

phased.MonopulseFeed

Creates sum and difference channels

Description

The phased.MonopulseFeed System object™ implements a monopulse feed system for the amplitude sum and difference monopulse tracker. This object combines received signals from an arbitrary array to form sum and difference channels. You can use this object as a feed for the phased.MonopulseEstimator System object.

To create a monopulse feed system:

  1. Create the phased.MonopulseFeed 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

feed = phased.MonopulseFeed creates a monopulse feed System object, feed, with default property values.

feed = phased.MonopulseFeed(Name,Value) creates a feed system 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: feed = phased.MonopulseFeed('SensorArray',phased.URA,'OperatingFrequency',300e6,'Coverage','Azimuth') sets the sensor array to a uniform rectangular array (URA) with default URA property values. The feed forms only the sum channel and azimuth difference channel. The feed system operates at 300 MHz.

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 directions of monopulse feed, specified as '3D' or 'Azimuth'. When you set this property to '3D', the monopulse feed forms the sum channel and both azimuth and elevation difference channels. When you set this property to 'Azimuth', the monopulse feed forms the sum channel and the azimuth difference channel.

Example: 'Azimuth'

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]

Enable angle estimate output, specified as false or true. Set this property to true to output the angle estimate in addition to sum and difference channels. Set this property to false to only output sum and difference channels.

Data Types: logical

Usage

Description

[sumchan,diffazchan] = feed(X,steervec) returns the sum channel signal, sumchan, and the azimuth difference channel signal, diffazchan, computed from the input signal, X. steervec specifies the array steering direction. To use this syntax, set the Coverage property to 'Azimuth'.

[sumchan,diffazchan,diffelchan] = feed(X,steervec) also returns the elevation difference channel signal, diffelchan. To use this syntax, set the Coverage property to '3D'.

example

[___,angest] = feed(X,steervec) also returns the estimated direction angle, angest. To use this syntax, set the AngleOutputPort property to true.

Input Arguments

expand all

Input signal, specified as a complex-valued M-by-N matrix, where M is the number of samples or snapshots of data, and N is the number of array elements. If the array contains subarrays, then N is the number of subarrays.

The size of the first dimension of the input matrix can vary to simulate a changing signal length. A size change can occur, for example, in the case of a pulse waveform with variable pulse repetition frequency.

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

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,

array = phased.URA('Size',[5 5]);
feed = phased.MonopulseFeed('SensorArray',array,'Coverage','3D', ...
       'AngleOutputPort',true);
[sumch,dazch,delch,angest] = feed(X,steervec);

Output Arguments

expand all

Sum-channel signal, returned as a complex-valued M-by-1 column vector, where M is the number of rows of X.

Data Types: double
Complex Number Support: Yes

Azimuth difference-channel signal, returned as a complex-valued M-by-1 column vector, where M is the number of rows of X.

Data Types: double
Complex Number Support: Yes

Elevation difference-channel signal, returned as a complex-valued M-by-1 column vector, where M is the number of rows of X.

Dependencies

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

Data Types: double
Complex Number Support: Yes

Estimated direction of target, returned as a real-valued 2-by-1 vector in the form [azimuth,elevation]. Units are in degrees.

Dependencies

To enable this output argument, set the AngleOutputPort 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

getMonopulseEstimatorCreate monopulse estimator from monopulse feed
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

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