ESPRIT based ToA Estimation

This module implements a method for estimating the delays using Estimation of Signal Parameters via Rotational Invariance Techniques (ESPRIT) method.


Code example

# shape of Hf: (numSubcarriers, numObservations)
L         = 12
esprit    = ESPRIT_ToA(Hf.shape)
delays    = esprit(Hf, numberOfPath=L, subcarrierSpacing=scs)

API Documentation

The following documentation provides the details about the input and output API for ESPRIT based ToA Estimation.

class toolkit5G.Positioning.ESPRIT_ToA(shape)[source]

This module provides interface for estimating the time of arrival (ToA)/delays using ESPRIT technique. This method reports the delays experienced by L strongest multi-paths while propagation over wireless channels.

Parameters:

shape ((2,), tuple) – shape of channel estimates matrix which has a dimension of \(\text{N}_\text{sc} \times \text{N}_\text{obs}\) where \(\text{N}_\text{sc}\) denotes the number of subcarriers and \(\text{N}_\text{obs}\) number of diverse observations/measurements of channel estimates available. For example shape = (1024, 16) if channel is estimated over 1024 subcarriers and 16 independent channel observations.

Input:
  • H ((numSubcarriers, :), np.complex) – Frequency domain (OFDM) channel state information across numSubcarriers. The second dimension provides the information diversity (time domain, space domain etc.).

  • numberOfPath (int) – Number of paths. The delay/ToA of each path in estimated. Default value is 1.

  • subcarrierSpacing (int or float) – Subcarrier spacing in Hz. Default value is None.

Output:

(numberOfPath, ), float – Delays of L-strongest multi-paths.

Raises:
  • ValueError – [Error-ESPRIT_ToA]: ‘H’ should be a 2D NumPy array!

  • ValueError – [Error-ESPRIT_ToA]: shape of H must be tuple of size 2!

  • ValueError – [Error-ESPRIT_ToA]: Neither of the two dimensions in ‘shape’ can be zero!

  • ValueError – [Error-ESPRIT_TOA]: The ‘shape[0]’ must be Even!

  • ValueError – [Error-ESPRIT_ToA]: ‘subCarrierSpacing’ must be non-negative integer or float!

  • ValueError – [Error-ESPRIT_ToA]: numSubcarriers must be a positive integer!

  • ValueError – [Error-ESPRIT_ToA]: ‘numberOfPath’ must be a positive integer less than number of subcarriers!