Documentation

# rootmusicdoa

Direction of arrival using Root MUSIC

## Syntax

``ang = rootmusicdoa(R,nsig)``
``ang = rootmusicdoa(___,'Name','Value')``

## Description

example

````ang = rootmusicdoa(R,nsig)` estimates the directions of arrival, `ang`, of a set of plane waves received on a uniform line array (ULA). The estimation uses the root MUSIC 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 = rootmusicdoa(___,'Name','Value')` allows you to specify additional input parameters in the form of Name-Value pairs. 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 Gaussian noise.

Set the SNR for each signal to 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 = rootmusicdoa(R,Nsig)```
```doa = 1×3 30.0000 0.0000 -25.0000 ```

These angles agree with the known input angles.

Assume a uniform line array 10 elements, as in the previous example. But now the element spacing is smaller than one-half wavelength. Three plane waves arrive from the 0°, –25°, and 30° azimuth directions. Elevation angles are 0°. The noise is spatially and temporally white Gaussian noise. The SNR for each signal is 5 dB.

Set element spacing to 0.4 wavelengths using the `ElementSpacing` name-value pair. Then, 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 = rootmusicdoa(R,Nsig,'ElementSpacing',d)```
```doa = 1×3 30.0000 -25.0000 -0.0000 ```

The solution agrees with the known 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. The number of signals must be smaller than the number of elements in the ULA array.

Example: 2

Data Types: `double`

### Name-Value Pair Arguments

Specify optional comma-separated pairs of `Name,Value` arguments. `Name` is the argument name and `Value` is the corresponding value. `Name` must appear inside quotes. You can specify several name and value pair arguments in any order as `Name1,Value1,...,NameN,ValueN`.

Example: ‘ElementSpacing’, 0.4

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`

## 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`. Angle units are degrees and angle values lie between –90° and 90°.

## References

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

## See Also

#### Hybrid Beamforming for Massive MIMO Phased Array Systems

Download the white paper