Main Content

phased.MVDREstimator

MVDR (Capon) spatial spectrum estimator for ULA

Description

The phased.MVDREstimator object computes a minimum variance distortionless response (MVDR) spatial spectrum estimate for a uniform linear array (ULA). The existing literature also refers this direction of arrival (DOA) estimator as a Capon DOA estimator.

To estimate the spatial spectrum:

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

mvdrEstimator = phased.MVDREstimator creates an MVDR spatial spectrum estimator System object™, mvdrEstimator. The object estimates the spectrum of the incoming signal using a narrowband MVDR beamformer for a ULA.

mvdrEstimator = phased.MVDREstimator(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

Number of bits used to quantize the phase shift component of beamformer or steering vector weights, specified a nonnegative integer. A value of zero indicates that the object performs no quantization.

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.

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 zero indicates that the object performs no spatial smoothing.

Data Types: single | double

Scan angles, specified as a vector of broadside angles in the range [−90, 90]. The units are in degrees. You must specify the angles in ascending order.

Data Types: single | double

DOA output activation, specified as true (logical 1) or false (logical 0). To obtain the DOA of the signal, set this property to true and use the corresponding output argument when invoking the object ( as if it were a function). If you do not want to obtain the DOA, set this property to false.

Data Types: logical

Number of signals, specified as a positive scalar integer.

Dependencies

This property applies when you set the DOAOutputPort property to true.

Data Types: double

Usage

Description

Y = mvdrEstimator(X) estimates the spatial spectrum from X.

[Y,ang] = mvdrEstimator(X) additionally returns output ang as the DOA of the signal when the DOAOutputPort property value is true.

Input Arguments

expand all

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

Data Types: double

Output Arguments

expand all

Magnitude of the estimated spatial spectrum, returned as a column vector.

Direction of arrival (DOA) of the signal, a row vector of the estimated broadside angles. The units are in degrees.

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

First, estimate the DOAs of two signals received by a standard 10-element ULA with element spacing of 1 meter. 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 60° in azimuth and −5° in elevation. Then, plot the MVDR spatial spectrum.

Create the signals with added noise. Then, create the ULA System object™.

fs = 8000;
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 = 150.0e6;
x = collectPlaneWave(array,[x1 x2],[10 20;60 -5]',fc);
noise = 0.1*(randn(size(x)) + 1i*randn(size(x)));

Create an MVDR estimator System object.

estimator = phased.MVDREstimator(SensorArray=array,...
    OperatingFrequency=fc,DOAOutputPort=true,NumSignals=2);

Estimate the DOAs.

[y,doas] = estimator(x + noise);
doas = broadside2az(sort(doas),[20 -5])
doas = 1×2

    9.5829   60.3813

Plot the spectrum.

plotSpectrum(estimator)

Figure contains an axes object. The axes object with title MVDR Spatial Spectrum, xlabel Broadside Angle (degrees), ylabel Power (dB) contains an object of type line. This object represents 1 GHz.

References

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

Extended Capabilities

expand all

Version History

Introduced in R2011a