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 acrossnumSubcarriers
. 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!