I am new to signal processing, but I have background in mathematics. I am trying to use Bluetooth Low Energy (BLE) on three mobile devices, where one device is being tracked and the other two act as antennas. I would like to compute the angle of arrival to compute the position of the device.

To do this, I have found the MUSIC algorithm, which (if I understand correctly) allows me to compute the angle of arrival by maximizing a function dependent on the steering vector $a(\theta).$

The first issue I am facing is computing this steering vector from a Python program. I feel that I lack a conceptual understanding of what this steering vector means.

Moreover, how can I actually implement a (Python, ideally) program which (a) detects nearby Bluetooth devices, (b) computes the steering vector, and (c) performs the MUSIC algorithm to compute the angle of arrival? Only a basic overview of the process is sufficient.

Thanks in advance.

  • $\begingroup$ Have you gone through the first work that introduced the MuSiC algorithm ("Multiple Emitter Location and Signal Parameter Estimation)? Have you looked for the steering vector (sometimes termed array manifold because it depends on the positions of the array elements) in the literature? In general, the steering vector is a vector that contains the transfer functions from the source (plane wave assumption) to the elements of the array. In the simple case of monochromatic field (single frequency) it actually contains the phase shifts (or delays if you prefer) (cont.) $\endgroup$
    – ZaellixA
    Commented Jun 16, 2023 at 18:18
  • $\begingroup$ (cont.ed) imposed by the time it takes for the (plane) wave to reach the each source. Most often, this is referenced to one of the sources or a point in the middle of the array. $\endgroup$
    – ZaellixA
    Commented Jun 16, 2023 at 18:20

1 Answer 1


The steering vector is dependent on the position of your antenna array elements. According to antenna array phase theory the distance between your antennas should be less than $\frac{\lambda}{2}$. Where $\lambda$ is the wavelength @2.4Ghz.

There are several papers/books that derive the formula but basically the steering vector is a matrix of size $1 \times N$, where $N$ is the number of antennas.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.