Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English version of the page.

# phased.BeamscanEstimator

Beamscan spatial spectrum estimator for ULA

## Description

The `phased.BeamscanEstimator` System object™ calculates a beamscan spatial spectrum estimate for a uniform linear array (ULA). The object estimates the incoming signal spatial spectrum using a narrowband conventional beamformer.

To estimate the spatial spectrum:

1. Create the `phased.BeamscanEstimator` object and set its properties.

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

## Creation

### Syntax

``estimator = phased.BeamscanEstimator``
``estimator = phased.BeamscanEstimator(Name,Value)``

### Description

````estimator = phased.BeamscanEstimator` creates a beamscan spatial spectrum estimator System object.```

example

````estimator = phased.BeamscanEstimator(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.

ULA sensor array, specified as a `phased.ULA` System object. If you do not specify any name-value pair properties for the ULA sensor array, the default properties of the array are used.

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`

Option to enable spatial smoothing, specified as a nonnegative integer. Use spatial smoothing to compute the arrival directions of coherent signals. A value of zero specifies no spatial smoothing. A positive value represents the number of subarrays used to compute the smoothed (averaged) source covariance matrix. Each increment in this value lets you handle one additional coherent source, but reduces the effective number of array elements by one. The length of the smoothing aperture, L, depends on the array length, M, and the averaging number, K, by L = M – K + 1. The maximum value of K is M – 2.

Example: `5`

Data Types: `double`

Broadside scan angles, specified as a real-valued vector. Units are in degrees. Broadside angles are between the search direction and the ULA array axis. The angles lie between –90° and 90°, inclusive. Specify the angles in increasing value.

Example: `[-20:20]`

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

For versions earlier than R2016b, use the `step` function to run the System object algorithm. The arguments to `step` are the object you created, followed by the arguments shown in this section.

For example, `y = step(obj,x)` and `y = obj(x)` perform equivalent operations.

### Syntax

``Y = estimator(X)``
``[Y,ANG] = estimator(X)``

### 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 row vector of the estimated broadside angles (in degrees). You can specify `ANG` as single or double precision. 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 (MATLAB) 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

Channel 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 real-valued 1-by-L column vector. L is the number of scan angles specified by the `ScanAngles` property.

Data Types: `single` | `double`

Estimated broadside angles of signal arrivals, returned as a real-valued 1-by-K row vector. Units are in degrees. The `NaN` value in any vector element indicates that an estimate could not be found.

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

expand all

Estimate the DOA's of two signals received by a 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.

Create the signals and array.

```fs = 8000; t = (0:1/fs:1).'; x1 = cos(2*pi*t*300); x2 = cos(2*pi*t*400); antenna = phased.IsotropicAntennaElement('FrequencyRange',[100e6 300e6]); array = phased.ULA('Element',antenna,'NumElements',10,'ElementSpacing',1); fc = 150e6; x = collectPlaneWave(array,[x1 x2],[10 20;60 -5]',fc); noise = 0.1*(randn(size(x)) + 1i*randn(size(x)));```

Solve for the DOAs.

```estimator = phased.BeamscanEstimator('SensorArray',array, ... 'OperatingFrequency',fc,'DOAOutputPort',true,'NumSignals',2); [~,doas] = estimator(x + noise); doas = broadside2az(sort(doas),[20 -5]); disp(doas)```
``` 9.5829 60.3813 ```

Because the default values for the `ScanAngles` property has a granularity of ${1}^{\circ }$, the DOA estimates are not accurate. Improve the accuracy by choosing a finer grid.

```estimator2 = phased.BeamscanEstimator('SensorArray',array, ... 'OperatingFrequency',fc,'ScanAngles',-60:0.1:60, ... 'DOAOutputPort',true,'NumSignals',2); [~,doas] = estimator2(x + noise); doas = broadside2az(sort(doas),[20 -5]); disp(doas)```
``` 10.0093 59.9751 ```

Plot the beamscan spectrum

`plotSpectrum(estimator)`

expand all

## References

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