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)
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 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.
height (float) – Heigth value used for identifying the spikes in the MUSIC spectrum. Default value is 0.05. For more details, read
height
infind_peaks
module ofSciPy
.prominence (float) – Prominence value used for identifying the spikes in the MUSIC spectrum. Default value is 0.05. For more details, read
prominence
infind_peaks
module ofSciPy
.
- 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.