# espritdoa

Direction of arrival using TLS ESPRIT

## Syntax

``ang = espritdoa(R,nsig)``
``ang = espritdoa(___,Name,Value)``

## Description

example

````ang = espritdoa(R,nsig)` estimates the directions of arrival, `ang`, of a set of plane waves received on a uniform line array (ULA). The estimation employs the TLS ESPRIT, the total least-squares ESPRIT, algorithm. The input arguments are the estimated spatial covariance matrix between sensor elements, `R`, and the number of arriving signals, `nsig`. In this syntax, sensor elements are spaced one-half wavelength apart.```

example

````ang = espritdoa(___,Name,Value)` estimates the directions of arrival with additional options specified by one or more `Name,Value` pair arguments. This syntax can use any of the input arguments in the previous syntax.```

## Examples

collapse all

Assume a half-wavelength spaced uniform line array with 10 elements. Three plane waves arrive from the 0°, –25°, and 30° azimuth directions. Elevation angles are 0°. The noise is spatially and temporally white. The SNR for each signal is 5 dB. Find the arrival angles.

```N = 10; d = 0.5; elementPos = (0:N-1)*d; angles = [0 -25 30]; Nsig = 3; R = sensorcov(elementPos,angles,db2pow(-5)); doa = espritdoa(R,Nsig)```
```doa = 1×3 30.0000 0.0000 -25.0000 ```

The `espritdoa` function returns the correct angles.

Assume a uniform line array with 10 elements. The element spacing is 0.4 wavelength. Three plane waves arrive from the 0°, –25°, and 30° azimuth directions. Elevation angles are 0°. The noise is spatially and temporally white. The SNR for each signal is 5 dB. Find the arrival angles.

```N = 10; d = 0.4; elementPos = (0:N-1)*d; angles = [0 -25 30]; Nsig = 3; R = sensorcov(elementPos,angles,db2pow(-5)); doa = espritdoa(R,Nsig,'ElementSpacing',d)```
```doa = 1×3 -25.0000 -0.0000 30.0000 ```

`espritdoa` returns the correct angles.

## Input Arguments

collapse all

Spatial covariance matrix, specified as a complex-valued, positive-definite, N-by-N matrix. In this matrix, N represents the number of elements in the ULA array. If `R` is not Hermitian, a Hermitian matrix is formed by averaging the matrix and its conjugate transpose, `(R+R')/2`.

Example: [ 4.3162, –0.2777 – 0.2337i; –0.2777 + 0.2337i , 4.3162]

Data Types: `double`
Complex Number Support: Yes

Number of arriving signals, specified as a positive integer.

Example: 3

Data Types: `double`

### Name-Value Arguments

Specify optional pairs of arguments as `Name1=Value1,...,NameN=ValueN`, where `Name` is the argument name and `Value` is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose `Name` in quotes.

Example: ‘ElementSpacing’, 0.45

ULA element spacing, specified as a real-valued, positive scalar. Position units are measured in terms of signal wavelength.

Example: 0.4

Data Types: `double`

Row weights specified as a real-valued positive scalar. These weights are applied to the selection matrices which determine the ESPRIT subarrays. A larger value is generally better but the value must be less than or equal to (Ns–1)/2, where Ns is the number of subarray elements. The number of subarray elements is Ns = N–1. The value of N is the number of ULA elements, as specified by the dimensions of the spatial covariance matrix, `R`. A detailed discussion of selection matrices and row weighting can be found in Van Trees , p. 1178.

Example: 5

Data Types: `double`

## Output Arguments

collapse all

Directions of arrival angle returned as a real-valued, 1-by-M vector. The dimension M is the number of arriving signals specified in the argument, `nsig`. This angle is the broadside angle. Angle units are degrees and angle values lie between –90° and 90°.

 Van Trees, H.L. Optimum Array Processing. New York: Wiley-Interscience, 2002.