# phased.BeamscanEstimator2D

2-D beamscan spatial spectrum estimator

## Description

The phased.BeamscanEstimator2D System object™ calculates a beamscan 2-D spatial spectrum estimate for an arbitrary array (ULA). The object estimates the incoming signal spatial spectrum using a narrowband conventional beamformer.

To estimate the spatial spectrum:

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

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

## Creation

### Description

estimator = phased.BeamscanEstimator2D creates a beamscan 2-D spatial spectrum estimator System object.

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

## 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.

Sensor array, specified as a Phased Array System Toolbox array System object.

Example: phased.URA

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

Example: 3e8

Data Types: single | double

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

Example: 1e9

Data Types: single | double

The number of bits used to quantize the phase shift component of beamformer or steering vector weights, specified as a non-negative integer. A value of zero indicates that no quantization is performed.

Example: 5

Data Types: single | double

Enable forward-backward averaging, specified as false or true. Set this property to true to use forward-backward averaging to estimate the covariance matrix for sensor arrays with a conjugate symmetric array manifold.

Data Types: logical

Azimuth scan angles, specified as a or real-valued row vector. Angle units are in degrees. The angle values must lie between –180° and 180°, inclusive, and be in ascending order.

Example: [-30:20]

Data Types: single | double

Elevation scan angles, specified as a real-valued row vector. Angle units are in degrees. The angle values must lie between –90° and 90°, inclusive, and be in ascending order.

Example: [-70:75]

Data Types: single | double

Option to enable directions-of-arrival (DOA) output, specified as false or true. To obtain the DOA of signals, set this property to true. The DOAs are returned in the second output argument when the object is executed.

Data Types: logical

Number of arriving signals for DOA estimation, specified as a positive integer.

Example: 3

#### Dependencies

To enable this property, set the DOAOutputPort property to true.

Data Types: single | double

## Usage

### Description

Y = estimator(X) estimates the spatial spectrum from data X.

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.

example

[Y,ANG] = estimator(X) returns the directions of arrival, ANG, of the signals. To enable this syntax, set the DOAOutputPort property to true. ANG is a 2-by-N matrix of the estimated azimuths and elevations of the signal direction. N is specified by the NumSignals property. If the object cannot identify a signal direction, it will return NaN.

Note

The object performs an initialization the first time the object is executed. This initialization locks nontunable properties and input specifications, such as dimensions, complexity, and data type of the input data. If you change a nontunable property or an input specification, the System object issues an error. To change nontunable properties or inputs, you must first call the release method to unlock the object.

### Input Arguments

expand all

Array data, specified as a complex-valued matrix. Columns of the data matrix correspond to channels.

Data Types: single | double
Complex Number Support: Yes

### Output Arguments

expand all

Magnitude of the estimated spatial spectrum, returned as a positive, real-valued, K-by-L matrix.

Data Types: single | double

Estimated direction angles of signal arrivals, returned as a real-valued 2-by-K matrix. Each column has the form [azimuth;elevation]. The NaN value in any matrix element indicates that an estimate could not be found. Units are in degrees.

Data Types: single | 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

 plotSpectrum Plot spatial spectrum
 step Run System object algorithm release Release resources and allow changes to System object property values and input characteristics reset Reset internal states of System object

## Examples

collapse all

Estimate the DOAs of two signals received by a 50-element URA with a rectangular lattice. The antenna operating frequency is 150 MHz. The actual direction of the first signal is -37° in azimuth and 0° in elevation. The direction of the second signal is 17° in azimuth and 20° in elevation.

antenna = phased.IsotropicAntennaElement('FrequencyRange',[100e6 300e6]);
array = phased.URA('Element',antenna,'Size',[5 10],'ElementSpacing',[1 0.6]);
fc = 150e6;
lambda = physconst('LightSpeed')/fc;
ang1 = [-37.5; 10.2];
ang2 = [17.4; 20.6];
x = sensorsig(getElementPosition(array)/lambda,8000,[ang1 ang2],0.2);
estimator = phased.BeamscanEstimator2D('SensorArray',array,'OperatingFrequency',fc, ...
'DOAOutputPort',true,'NumSignals',2,'AzimuthScanAngles',-50:50,'ElevationScanAngles',-30:30);
[~,doas] = estimator(x);
disp(doas)
17   -37
20    10

Because the values for the AzimuthScanAngles and ElevationScanAngles properties have a granularity of ${1}^{\circ }$, the DOA estimates are not accurate. Improve the accuracy by choosing a finer grid

estimator2 = phased.BeamscanEstimator2D('SensorArray',array,'OperatingFrequency',fc, ...
'DOAOutputPort',true,'NumSignals',2,'AzimuthScanAngles',-50:0.05:50,'ElevationScanAngles',-30:0.05:30);
[~,doas] = estimator2(x);
disp(doas)
17.3000  -37.4000
20.5000   10.3000

Plot the beamscan spatial spectrum

plotSpectrum(estimator)

expand all

## References

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

## Version History

Introduced in R2011a