Documentation

# phased.GCCEstimator

Wideband direction of arrival estimation

## Description

The `phased.GCCEstimator` System object™ creates a direction of arrival estimator for wideband signals. This System object estimates the direction of arrival or time of arrival among sensor array elements using the generalized cross-correlation with phase transform algorithm (GCC-PHAT). The algorithm assumes that all signals propagate from a single source lying in the array far field so the direction of arrival is the same for all sensors. The System object first estimates the correlations between all specified sensor pairs using GCC-PHAT and then finds the largest peak in each correlation. The peak identifies the delay between the signals arriving at each sensor pair. Finally, a least-squares estimate is used to derive the direction of arrival from all estimated delays.

To compute the direction of arrival for pairs of element in the array:

1. Define and set up a GCC-PHAT estimator System object, `phased.GCCEstimator`, using the Construction procedure.

2. Call `step` to compute the direction of arrival of a signal using the properties of the `phased.GCCEstimator` System object.

The behavior of `step` is specific to each object in the toolbox.

### Note

Starting in R2016b, instead of using the `step` method to perform the operation defined by the System object, you can call the object with arguments, as if it were a function. For example, ```y = step(obj,x)``` and `y = obj(x)` perform equivalent operations.

## Construction

`sGCC = phased.GCCEstimator` creates a GCC direction of arrival estimator System object, `sGCC`. This object estimates the direction of arrival or time of arrival between sensor array elements using the GCC-PHAT algorithm.

`sGCC = phased.GCCEstimator(Name,Value)` returns a GCC direction of arrival estimator object, `sGCC`, with the specified property `Name` set to the specified `Value`. `Name` must appear inside single quotes (`''`). You can specify several name-value pair arguments in any order as `Name1,Value1,...,NameN,ValueN`.

## Properties

expand all

Sensor array, specified as a Phased Array System Toolbox System object. The array can also consist of subarrays. If you do not specify this property, the default sensor array is a `phased.ULA` System object with default array property values.

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`

Signal sample rate, specified as a positive real-valued scalar. Units are in hertz.

Example: `1e6`

Data Types: `single` | `double`

Source of sensor pairs, specified as either `'Auto'` or `'Property'`.

• `'Auto'` — choose this property value to compute correlations between the first sensor and all other sensors. The first sensor of the array is the reference channel.

• `'Property'` — choose this property value when you want to explicitly specify the sensor pairs to be used for computing correlations. Set the sensor pair indices using the `SensorPair` property. You can view the array indices using the `viewArray` method of any array System object.

Example: `'Auto'`

Data Types: `char`

Sensor pairs used to compute correlations, specified as a 2-by-N positive integer-valued matrix. Each column of the matrix specifies a pair of sensors between which the correlation is computed. The second row specifies the reference sensors. Each entry in the matrix must be less than the number of array sensors or subarrays. To use the `SensorPair` property, you must also set the `SensorPairSource` value to `'Property'`.

Example: `[1,3,5;2,4,6]`

Data Types: `double`

Option to enable output of time delay values, specified as a Boolean. Set this property to `true` to output the delay values as an output argument of the `step` method. The delays correspond to the arrival angles of a signal between sensor pairs. Set this property to `false` to disable the output of delays.

Example: `false`

Data Types: `logical`

Option to enable output of correlation values, specified as a Boolean. Set this property to `true` to output the correlations and lags between sensor pairs as output arguments of the `step` method. Set this property to `false` to disable output of correlations.

Example: false

Data Types: `logical`

## Methods

 reset Reset states of phased.GCCEstimator System object step Estimate direction of arrival using generalized cross-correlation
Common to All System Objects
`release`

Allow System object property value changes

## Examples

expand all

Estimate the direction of arrival of a signal using the GCC-PHAT algorithm. The receiving array is a 5-by-5-element URA microphone array with elements spaced 0.25 meters apart. The arriving signal is a sequence of wideband chirps. The signal arrives from 17� azimuth and 0� elevation. Assume the speed of sound in air is 340 m/s.

```load chirp; c = 340.0;```

Create the 5-by-5 microphone URA.

```d = 0.25; N = 5; mic = phased.OmnidirectionalMicrophoneElement; array = phased.URA([N,N],[d,d],'Element',mic);```

Simulate the incoming signal using the `WidebandCollector` System object�.

```arrivalAng = [17;0]; collector = phased.WidebandCollector('Sensor',array,'PropagationSpeed',c,... 'SampleRate',Fs,'ModulatedInput',false); signal = collector(y,arrivalAng);```

Estimate the direction of arrival.

```estimator = phased.GCCEstimator('SensorArray',array,... 'PropagationSpeed',c,'SampleRate',Fs); ang = estimator(signal)```
```ang = 2×1 16.4538 -0.7145 ```

expand all

## References

[1] Knapp, C. H. and G.C. Carter, “The Generalized Correlation Method for Estimation of Time Delay.” IEEE Transactions on Acoustics, Speech and Signal Processing. Vol. ASSP-24, No. 4, Aug 1976.

[2] G. C. Carter, “Coherence and Time Delay Estimation.” Proceedings of the IEEE. Vol. 75, No. 2, Feb 1987.