Main Content


Wideband direction of arrival estimation


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.


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.


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.


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


resetReset states of phased.GCCEstimator System object
stepEstimate direction of arrival using generalized cross-correlation
Common to All System Objects

Allow System object property value changes


collapse 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 the chirp signal.

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,...
signal = collector(y,arrivalAng);

Estimate the direction of arrival.

estimator = phased.GCCEstimator('SensorArray',array,...
ang = estimator(signal)
ang = 2×1



expand all


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

Extended Capabilities

Version History

Introduced in R2015b