MUSIC based ToA Estimation

MUSIC (Multiple Signal Classification) is a popular spectral estimation technique used for Time of Arrival (ToA) estimation in wireless communication systems.

  1. Principle: MUSIC is a high-resolution algorithm that exploits the eigenstructure of the received signal covariance matrix to estimate the ToA of signals. It works by decomposing the received signal into signal and noise subspaces and then exploiting the orthogonality between them to estimate the signal parameters.

  2. Signal Model: In MUSIC-based ToA estimation, the received signal is assumed to be a linear combination of delayed versions of a known waveform, corrupted by additive noise. The signal model is represented as a matrix equation involving the signal covariance matrix.

  3. Eigenvalue Decomposition: MUSIC performs eigenvalue decomposition on the signal covariance matrix to obtain its eigenvectors and eigenvalues. The eigenvectors corresponding to the noise subspace are orthogonal to the signal subspace, allowing for the separation of signal and noise components.

  4. Spectral Estimation: By projecting the received signal onto the noise subspace, MUSIC suppresses the signal component, leaving only the noise. The ToA estimates are then obtained by analyzing the spectral peaks of the projected noise.

  5. ToA Estimation: MUSIC estimates the ToA of signals by identifying the peaks in the pseudospectrum, which represents the spectral density of the received signal after projection onto the noise subspace. The peaks in the pseudospectrum correspond to the signal arrival times, allowing for accurate ToA estimation.

  6. Advantages: MUSIC offers several advantages for ToA estimation, including high resolution, robustness to noise and interference, and the ability to handle multiple signals simultaneously. It can accurately estimate the ToA of signals even in the presence of strong interference or noise.

  7. Implementation Considerations: Practical implementation of MUSIC-based ToA estimation requires knowledge of the signal waveform and the number of signals to be estimated. It also assumes that the received signal is narrowband and exhibits statistical stationarity. Preprocessing steps such as synchronization and channel estimation may be necessary to improve performance.

It is a powerful technique that offers high accuracy and resolution for determining signal arrival times in wireless communication systems. It is particularly useful in scenarios where precise timing information is critical, such as in radar, localization, and synchronization applications.


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()
Alternative text
fig, ax = music.displayEigenValues(0, 30)
Alternative text

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

  • 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 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:

(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 and prominence.

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 and min_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 and prominence helps in finding this spikes. For more details, read find_peaks in SciPy.

Tip

Very low value of height degrades the immunity against noise floor. On the other hand very high value of height 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]!

MUSIC_ToA.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.

  • displayPlot (bool) – Whether to display the matplotlib plot or not.

Returns:

fig is figure type matplotlib object and ax 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]!

MUSIC_ToA.displayMUSICSpectrum(displayPlot=True)[source]

Plots the MUSIC spectrum for the given channel for the configured parameters.

Parameters:

displayPlot (bool) – Whether to display the matplotlib plot or not.

Returns:

fig is figure type matplotlib object and ax is axes type matplotlib object.

Return type:

(fig, ax), tuple