MUSIC based ToA Estimation
This module implements a method for estimating the delays using MUltiple SIgnal Classification (MUSIC) method.
Code example
# shape of Hf: (numSubcarriers, numObservations)
L = 12
min_delay = 10**(-8)
max_delay = 2.5*10**(-6)
music = MUSIC_ToA()
delays = music(Hf, numberOfPath=L, subCarrierSpacing=scs, min_delay=min_delay, max_delay=max_delay)
fig, ax = music.displayMUSICSpectrum()
fig, ax = music.displayEigenValues(0, 30)
API Documentation
The following documentation provides the details about the input and output API for MUSIC algorithm for ToA Estimation.
- class toolkit5G.Positioning.MUSIC_ToA(numSamples=1000)[source]
This module provides interface for estimating the time of arrival (ToA)/delays using MU ltiple SI gnal C* lassification (MUSIC) method. It returns the delays experienced by
numberOfPath
strongest multi-paths while propagation over wireless channels.- Parameters:
numSamples (int) – Number of samples for MUSIC spectrum computation. Default value is 1000.
- 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.
min_delay=0 – minimum possible values of delay. Default value is 0. It is used for computing the MUSIC spectrum.
max_delay=10**(-5) – maximum possible values of delay. Default value is 0. It is used for computing the MUSIC spectrum.
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:
(
numberOfPath
, ), float – Delays of numberOfPath-strongest multi-paths.- Attributes:
eigenValues ((numSubcarriers,), float) – Eigen values of the MUSIC correlation matrix. It can be used for estimating the number of dominant paths in wireless channel.
delayGrid ((numSamples,), flaat) – Delay grid of MUSIC spectrum. Denotes the
numSamples
from the interval [min_delay, max_delay]musicSpectrum ((numSamples,), flaat) – MUSIC spectrum values at the delay grid values.
peakValues ((numSpikes,), float) – Values of the spike found in the MUSIC spectrum for the given
height
andprominence
.
Tip
The larger the value of
numSamples
higher the accuracy of ToA estimates and higher will the computational complexity and memory consumption of the module.Warning
The channel state information (
H
) should have subcarriers along the first (0-th) dimension.Note
min_delay
andmin_delay
values help in managing the computational complexity and estimation accuracy for delays estimation.Note
The MUSIC algorithm estimates the delays based on the MUSIC spectrum. This MUSIC spectrum contains spikes at time instants corresponding to actual multipath delays. Once, the MUSIC spectrum is estimated, the algorithms identifies the peaks in this spectrum. The
height
andprominence
helps in finding this spikes. For more details, readfind_peaks
inSciPy
.Tip
Very low value of
height
degrades the immunity against noise floor. On the other hand very high value ofheight
results in missing the weak multipath components. In case, the LoS path is weak, this reduces the accuracy of positioning.- Raises:
ValueError – [Error-MUSIC_ToA]: ‘H’ should be a 2D NumPy array!
ValueError – [Error-MUSIC_ToA]: ‘subCarrierSpacing’ must be non-negative integer or float!
ValueError – [Error-MUSIC_ToA]: ‘numSamples’ must be a positive integer!
ValueError – [Error: MUSIC-ToA]: numberOfPath (number of paths) must be a positive integer less than number of subcarriers!
ValueError – [Error-MUSIC_ToA]: ‘numSubcarriers’ must be a positive integer!
ValueError – [Error-MUSIC_ToA]: ‘numberOfPath’ must be a positive integer less than number of subcarriers!
ValueError – [Error-MUSIC_ToA]: ‘min_delay’ must be non-negative integer or float!
ValueError – [Error-MUSIC_ToA]: ‘max_delay’ must be non-negative integer or float greater than ‘min_delay’
ValueError – [Error-MUSIC_ToA]: ‘idxLow’ must be an integer from interval [0, numSubcarriers]!
ValueError – [Error-MUSIC_ToA]: ‘idxHigh’ must be an integer from interval [idxLow, numSubcarriers]!
- displayEigenValues(idxLow=0, idxHigh=-1, displayPlot=True)[source]
Displays the eigen values for each possible basis in decreasing order.
- Parameters:
idxLow (int) – Lowest index from where to start plotting.
idxHigh (int) – Highest index till where to plot.
- Returns:
fig
is figure type matplotlib object andax
is axes type matplotlib object.- Return type:
(fig, ax), tuple
- Raises:
ValueError – [Error-MUSIC_ToA]: ‘idxLow’ must be an integer from interval [0, numSubcarriers]!
ValueError – [Error-MUSIC_ToA]: ‘idxHigh’ must be an integer from interval [idxLow, numSubcarriers]!