Main Content

phased.TDOAEstimator

Time-difference of arrival estimation

Since R2024b

Description

The phased.TDOAEstimator System object™ estimates time-differences of arrival (TDOA's) of signals originating from active targets and arriving at known passive sensor locations (anchors). You can then use TDOA estimates to determine target locations using the, for example, the tdoaposest function. Using one anchor as a reference anchor, estimator correlates the received time-domain signals at the other anchors with the reference anchors to generate TDOA estimates. The object uses the Generalized Cross-Correlation Phase Transform algorithm (GCC-PHAT) to perform the correlation. The object requires that all anchors are time-synchronized and there is no coordination between anchors such as knowledge of the transmit waveforms and number of targets.

To estimate TDOA:

  1. Create the phased.TDOAEstimator object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?

Creation

Description

estimator = phased.TDOAEstimator creates a phased.TDOAEstimator System object, estimator, with default property values.

example

estimator = phased.TDOAEstimator(Name=Value) creates a TDOA estimator System object with each specified property Name set to the specified Value.

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

Properties

expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects.

Source of sample rate, specified as "Property" or "Input Port". When you set the SampleRateSource property to "Property", use the SampleRate property to set the sample rate. When you set the SampleRateSource to "Input Port", use the input argument fs to set the sample rate. The sample rate is needed to estimate the TDOA variance var.

Example: SampleRateSource="Property"

Data Types: char | string

Sample rate of received data, specified as a positive scalar. Units are Hertz.

Example: SampleRate=9.0e6

Dependencies

To enable this property, set the SampleRateSource property to "Property".

Data Types: single | double

Maximum number of TDOA estimates, specified as a positive integer.

Example: NumEstimates=5

Data Types: single | double

Enable the input of known or estimated delay offset between the anchors and the targets, specified as logical false (0) or logical true (1). When you set the DelayOffsetInputPort property to true, use the object input argument delayoffset to specify delay offsets. When false, the object assumes that delay offsets are zero.

Example: DelayOffsetInputPort=true

Data Types: logical

Enable the output of estimated variances of the TOA or TDOA using the var output argument, specified as a logical false (0) or logical true (1). Set this property to true to output the variances and false to not output the variances.

Example: VarianceOutputPort=true

Data Types: logical

Source of the noise power values used for TDOA variance estimation, specified as "Property" or "Input port". When you set NoisePowerSource property to "Property", the NoisePower property represents the noise power of the received data. When you set the NoisePowerSource property to "Input port", you can specify the noise power using the npow input argument.

Example: NoisePowerSource="Input port"

Data Types: logical

Noise power for the received signal, specified as a positive scalar or a length-L real-valued nonnegative vector. L is the number of anchors. If the NoisePower property is a scalar, the noise power is the same for all L anchors. If the NoisePower peropry is a length-L vector, each noise power value is applied to one of the L anchors. Units are in watts.

Example: NoisePower=[0.5 0.7 0.8]

Dependencies

To enable this property, set the NoisePowerSource property to "Property".

Data Types: single | double

Usage

Description

Y = estimator(X) estimates the time difference of arrivals (TDOAs), Y, of signals arriving at passive anchors with known positions from an active target whose positions is to be determined. X represents the time-domain received signal matrices at the anchors.

example

Y = estimator(X,fs) also specifies the sample rate fs for all anchors. To enable this syntax, set the SampleRateSource property to "Input port".

Y = estimator(X,___,delayoffset) performs TDOA estimation when the anchors are not synchronized in time. Use the delayoffset input argument to specify known delay offsets between the clock at each anchor and the reference anchor clock. The TDOA estimation result Y is compensated for by the input argument delayoffset. To enabled this syntax, set the DelayOffsetInputPort property to true.

[Y,var] = estimator(___) also returns the estimated TDOA variance var, var is obtained from a Cramer-Rao lower bound (CRLB) based on the input X and the white Gaussian noise power. The variance estimate assumes there are K targets splitting the received signal power equally. The noise power can be specified by either the NoisePower property or the input argument npow. To enable this syntax, set the VarianceOutputPort property to true.

[Y,var] = estimator(___,npow) calculates the estimated TDOA variance var from the input power npow that represents the white Gaussian noise power at each anchor. To enable this syntax, set the NoisePowerSource property to be "Input port".

Input Arguments

expand all

Received signal matrices, specified as an N-by-M-by-L complex-valued array. L represents the number of anchors. Each page represents an N-by-M complex-valued matrix for a different anchor. The first page corresponds to the reference anchor. The rows of each signal matrix represent M independent pulses (such as slow-time samples of a radar) and each column represents N fast-time samples of a pulse.

Data Types: single | double
Complex Number Support: Yes

Sample rate for all L anchors, specified as a positive scalar. Units are in Hz.

Example: 1e8

Dependencies

To enable this argument, set the SampleRateSource to "Input port".

Data Types: single | double

Delay offset, specified as a scalar or as a 1-by-L real-valued vector where L is the number of anchors. The TDOA estimation result Y is adjusted by value of the delayoffset argument. The offset is the known delay offset between the clock at each anchor and the reference clock for the first anchor. If delayoffset is a scalar, the delay offset is the same for all L anchors. If delayoffset is a 1-by-L vector, the delay offset can be different for different anchors. Units are in Hz.

Example: 0.5

Dependencies

To enable this argument, set the DelayOffsetInputPort property to true.

Data Types: single | double

Noise power, specified as a positive scalar or a 1-by-L vector of positive values. If npow is a scalar, the noise power is the same for all L anchors. If npow is a 1-by-L vector, a different noise power can be applied to each of the L anchors. Use this argument to compute the output variance var.

Example: [20 300 50]

Dependencies

To enable this argument, set the NoisePowerSource property to true.

Data Types: single | double

Output Arguments

expand all

TDOA estimates, returned as a K-by-(L–1) real-valued matrix. K is the maximum number of targets specified by the NumEstimates property. L is the number of anchors producing (L–1) anchor pairs. The lth column of Y represents the TDOA estimates for the lth anchor pair which is the time difference between (l+1)-th anchor and the first anchor.

The TDOA for an anchor pair is estimated by detecting the locations of up to K peaks from the GCC-PHAT TDOA spectrum. If the number of detected peaks for the lth anchor pair is less than K, the first entries of the lth column of Y contain the valid TDOA estimates, and the remaining entries in the lth column of Y are filled with NaN. Units are in seconds.

Data Types: single | double

Estimated TDOA variance, returned as a 1-by-(L-1) positive-valued vector. var is obtained from the Cramer-Rao lower bound (CRLB) of estimating TDOA based on the input X and the white Gaussian noise power, assuming there are K targets equally splitting received signal power. The noise power can be specified either by the NoisePower property or using the npow input argument. Units are seconds-squared.

Dependencies

To enable this argument, set the VarianceOutputPort property to true.

Data Types: single | double

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:

release(obj)

expand all

plotTDOASpectrumCreate and plot signal time-difference-of-arrival (TDOA) spectrum
stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Examples

collapse all

Start with a target and five anchors having known positions. Estimate the time-differences of arrival (TDOA) at the anchors by applying the GCC-PHAT algorithm on the received signals from the target .

First, load data from the TDOAEstimatorExampleData file whose variables are:

Variable

Definition

Xtime

Time-domain received signals

fs

Sample rate (Hz)

toalos

Line-of-sight time of arrival (sec)

load TDOAEstimatorExampleData

Create a phased.TDOAEstimator System™ object that employs the GCC-PHAT-based method.

tdoaEstimator = phased.TDOAEstimator(SampleRate=fs);

Estimate the TDOA.

tdoaest = tdoaEstimator(Xtime)
tdoaest = 1×4
10-7 ×

    0.5600    0.5700    0.6900    0.4400

Compute the true TDOA.

tdoatruth = toalos(2:end) - toalos(1)
tdoatruth = 1×4
10-7 ×

    0.5576    0.5887    0.6955    0.4355

tdoatruthnlos = toanlos(2:end) - toanlos(1)
tdoatruthnlos = 1×4
10-6 ×

    0.0861   -0.1705    0.1025   -0.0173

More About

expand all

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2024b