Main Content

phased.ESPRITEstimator

ESPRIT direction of arrival (DOA) estimator for ULA

Description

The phased.ESPRITEstimator System object™ estimate the direction of arrival of signals parameters via rotational invariance (ESPRIT) direction of arrival estimate.

To estimates the signal's direction-of-arrival (DOA) using the ESPRIT algorithm with a uniform linear array (ULA):

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

espritEstimator = phased.ESPRITEstimator creates an ESPRIT DOA estimator System object, espritEstimator. The object estimates the signal's direction-of-arrival (DOA) using the ESPRIT algorithm with a uniform linear array (ULA).

espritEstimator = phased.ESPRITEstimator(Name=Value) sets properties using one or more optional name-value arguments. For example, OperatingFrequency=4e8 sets the operating frequency to 4e8.

example

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 a phased.ULA object.

Signal propagation speed, specified as a positive scalar. The units are in meters per second.

Data Types: single | double

System operating frequency, specified as a positive scalar. The units are in hertz.

Data Types: single | double

Forward-backward averaging option, specified as true (logical 1) or false (logical 0). When you set this property to true, the object uses forward-backward averaging to estimate the covariance matrix for sensor arrays with conjugate symmetric array manifold.

Forward-backward averaging option, specified as true (logical 1) or false (logical 0). When you set this property to true, the object uses forward-backward averaging to estimate the covariance matrix for sensor arrays with conjugate symmetric array manifold.

Data Types: logical

Number of averaging used by spatial smoothing to estimate the covariance matrix, specified as nonnegative integer. Each additional smoothing handles one extra coherent source, but reduces the effective number of element by 1. The maximum value of this property is M–2, where M is the number of sensors. A value of 0 indicates no spatial smoothing.

Data Types: single | double

Source of the number of signals, specified as "Auto" or "Property". If you set this property to "Auto", the object estimates the number of signals by the method specified by the NumSignalsMethod property.

Method to estimate the number of signals, specified as "AIC" or "MDL". The "AIC" uses the Akaike Information Criterion and the "MDL" uses Minimum Description Length criterion. This property applies when you set the NumSignalsSource property to "Auto".

Dependencies

This property applies when you set the NumSignalsSource property to "Auto".

Number of signals, specified as a positive integer. The number of signals, Nsig, must be smaller than the number of elements, Nsub, in the subarray derived from the array specified in the SensorArray property. See ESPRIT Subarrays.

Dependencies

This property applies when you set the NumSignalsSource property to "Property".

Data Types: single | double

Least squares method used for ESPRIT, specified as "TLS" or "LS". "TLS" refers to total least squares and "LS"refers to least squares.

Row weighting factor for signal subspace eigenvectors, specified as a positive integer. This property controls the weights applied to the selection matrices. In most cases the higher value the better. However, it can never be greater than (Nsub – 1)/2 where Nsub is the number of elements in the subarray derived from the array specified in the SensorArray property. See ESPRIT Subarrays.

Data Types: single | double

Usage

Description

ang = espritEstimator(X) estimates the DOAs from X.

Input Arguments

expand all

channels, specified as a matrix. The columns of the matrix correspond to channels.

Data Types: double

Output Arguments

expand all

Estimated broadside angles, returned as a row vector. Units are in degrees.

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

Estimate the directions-of-arrival (DOA) of two signals received by a standard 10-element ULA with element spacing 1 m. The antenna operating frequency is 150 MHz. The actual direction of the first signal is 10° in azimuth and 20° in elevation. The direction of the second signal is 45° in azimuth and 60° in elevation.

Create the signals.

fs = 8.0e3;
t = (0:1/fs:1).';
x1 = cos(2*pi*t*300);
x2 = cos(2*pi*t*400);
array = phased.ULA(NumElements=10,ElementSpacing=1);
array.Element.FrequencyRange = [100e6 300e6];
fc = 150e6;

Create the plane waves and add noise.

x = collectPlaneWave(array,[x1 x2],[10 20;45 60]',fc);
noise = 0.1/sqrt(2)*(randn(size(x)) + 1i*randn(size(x)));

Estimate the arrival angles.

estimator = phased.ESPRITEstimator(SensorArray=array,...
    OperatingFrequency=fc);
doas = estimator(x + noise);
az = broadside2az(sort(doas),[20 60])
az = 1×2

   10.0000   45.0126

Algorithms

expand all

References

[1] Van Trees, H. Optimum Array Processing. New York: Wiley-Interscience, 2002.

Extended Capabilities

expand all

Version History

Introduced in R2011a

See Also