DFT based Method

This module implements a method for estimating the delays using Discrete Fourier Transform (DFT) method. This method uses the discrete Fourier transform to compute the power delay profile (PDP) and estimates delays by finding the spikes the PDP. It can also the Fourier oversampling to up sample the time domain channel to further improve the resolution of ToA estimates, However, this method suffers performance degradation if channel state information (CSI) is not available across all the sub-carriers which is very common in practical scenarios.

Note

DFT based method suffers performance degradation if channel state information (CSI) is not available across all the sub-carriers which is very common in practical scenarios.


Code example

# shape of Hf: (numSubcarriers, numObservations)
osFactor   = 16
Lpath      = 12
dftToA     = DFT_ToA(osFactor)
delays     = dftToA(H, Lpath, scs, prominence=0.05, height=0.05)
fig, ax = dftToA.displayPDPs(delays[0]*0.25, delays[-1]*1.25)
Alternative text

API Documentation

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

class toolkit5G.Positioning.DFT_ToA(oversamplingFactor=1)[source]

This method provides the API for estimating the time of arrival (ToA)/delay for multi-path based on the discrete Fourier transform method.

Parameters:

oversamplingFactor (int) – Defines the time domain oversampling factor. Default value is 1. It also represents the factor for the DFT interpolation.

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.

  • height (float) – Heigth value used for identifying the spikes in the MUSIC spectrum. Default value is 0.05. For more details, read height in find_peaks module of SciPy.

  • prominence (float) – Prominence value used for identifying the spikes in the MUSIC spectrum. Default value is 0.05. For more details, read prominence in find_peaks module of SciPy.

Output:

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

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

  • ValueError – [Error-DFT_ToA]: ‘numPaths’ must be a positive integer less than number of Nfft!

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

  • ValueError – [Error-DFT_ToA]: ‘height’ must be non-negative number!

  • ValueError – [Error-DFT_ToA]: ‘prominence’ must be non-negative number!

  • ValueError – [Error-DFT_ToA]: ‘Num-subcarriers’(Nfft) must be a positive integer!

  • ValueError – [Error-DFT_ToA]: ‘xMin’ must be a positive number!

  • ValueError – [Error-DFT_ToA]: ‘xMax’ must be a positive number larger than ‘xMin’!

displayPDPs(xMin=0, xMax=None)[source]

Displays the power delay profile for the channel input to the methods.

Parameters:
  • xMin (number) – minimum delay from where to start plotting the power delay profile. Default value is 0.

  • xMax (number) – maximum delay where power delay profile plotting should stop. Default value is None.