Wideband direction of arrival estimation
a direction of arrival estimator for wideband signals. This System
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,
aleast-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:
Define and set up a GCC-PHAT estimator System
using the Construction procedure.
step to compute the direction
of arrival of a signal using the properties of the
The behavior of
step is specific to each object
in the toolbox.
Starting in R2016b, instead of using the
to perform the operation defined by the System
object, you can
call the object with arguments, as if it were a function. For example,
= step(obj,x) and
y = obj(x) perform
a GCC direction of arrival estimator System object,
sGCC = phased.GCCEstimator
This object estimates the direction of arrival or time of arrival
between sensor array elements using the GCC-PHAT algorithm.
a GCC direction of arrival estimator object,
sGCC = phased.GCCEstimator(Name,Value)
with the specified property
Name set to the specified
appear inside single quotes (
''). You can specify
several name-value pair arguments in any order as
SensorArray— Sensor array
phased.ULASystem object (default) | Phased Array System Toolbox™ sensor array
Sensor array, specified as a Phased Array
System Toolbox System
The array can also consist of subarrays. If you do not specify this
property, the default sensor array is a
default array property values.
PropagationSpeed— Signal propagation speed
Signal propagation speed, specified as a positive real-valued scalar. Units are in meters per second.
SampleRate— Sample rate
Sample rate, specified as a positive real-valued scalar. Units are in hertz.
SensorPairSource— Source of sensor pairs
Source of sensor pairs, specified as either
'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
SensorPair property. You can view the
array indices using the
viewArray method of any
SensorPair— Sensor pairs
[2;1](default) | 2-by-N positive integer valued matrix
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
you must also set the
DelayOutputPort— Option to enable delay output
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
The delays correspond to the arrival angles of a signal between sensor
pairs. Set this property to
false to disable the
output of delays.
CorrelationOutputPort— Option to enable correlation output
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
step method. Set this property to
disable output of correlations.
|reset||Reset states of phased.GCCEstimator System object|
|step||Estimate direction of arrival using generalized cross-correlation|
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 widebandand chirps. The signal arrives from 17° azimuth and 0° elevation. Assume the speed of sound in air is 340 m/s.
Note: This example runs only in R2016b or later. If you are using an earlier release, replace each call to the function with the equivalent
step syntax. For example, replace
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,... '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 = 16.4538 -0.7145
You can use generalized cross-correlation to estimate the time difference of arrival of a signal at two different sensors.
A model of a signal emitted by a source and received at two sensors is given by:
From the TDOA, you can estimate the broadside arrival angle of the plane wave with respect to the line connecting the two sensors. For two sensors separated by distance L, the broadside arrival angle, Broadside Angles, is related to the time lag by
A common method of estimating time delay is to compute the cross-correlation between signals received at two sensors. To identify the time delay, locate the peak in the cross-correlation. When the signal-to-noise ratio (SNR) is large, the correlation peak, τ, corresponds to the actual time delay D.
If you use just two sensor pairs, you can only estimate the broadside angle of arrival. However, if you use multiple pairs of non-collinear sensors, for example, in a URA, you can estimate the arrival azimuth and elevation angles of the plane wave using least-square estimation. For N sensors, you can write the delay time τkj of a signal arriving at the kth sensor with respect to the jth sensor by
 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.
 G. C. Carter, “Coherence and Time Delay Estimation.” Proceedings of the IEEE. Vol. 75, No. 2, Feb 1987.
Usage notes and limitations:
See System Objects in MATLAB Code Generation (MATLAB Coder).