I have seen multiple reviews of the MUSIC algorithm for the estimation of DOA. Most of those reviews consider a complex signal input with a complex steering vector. So, how do I implement this algorithm in case I have an array of real signals?

Should I try translating the real signals to complex representation? If yes, how?

A minimal example: $$x_1(t)=\sin(\omega t) + n_1(t)$$ $$x_2(t)=\sin(\omega t + \phi) + n_2(t)$$ $$x_3(t)=\sin(\omega t + 2\phi) + n_3(t)$$ I like finding $\phi$ using the MUSIC algorithm.


Following the suggestion of neglecting the imaginary part, the covariance matrix will become a multiplication of the unit matrix, which does not seems to help.

  • 1
    $\begingroup$ Just implement the algorithm and set the imaginary part of the signals to zero. $\endgroup$
    – MBaz
    May 6, 2022 at 19:36
  • $\begingroup$ @MBaz, say I measure two noisy signals x1=sin(wt), x2=sin(wt + phi1). I can understand the solution if I had a complex implementation but how I solve it using your suggestion? $\endgroup$ May 6, 2022 at 20:07
  • $\begingroup$ Well, if you look at the math, nothing says that the complex part of the signals cannot be zero. The math still works out. By the way, the reason all the math is complex is because it deals with lowpass equivalent signals (complex envelopes). All actual signals impinging on the array are, of course, real. And the math still works out! $\endgroup$
    – MBaz
    May 6, 2022 at 21:04
  • 1
    $\begingroup$ You can perform FFT on your input signal, and loop MUSIC algorithm for each FFT bin. $\endgroup$
    – ZR Han
    May 6, 2022 at 23:17
  • 1
    $\begingroup$ Maybe helpful: A real-valued MUSIC algorithm with forward/backward technique $\endgroup$ May 8, 2022 at 0:27

1 Answer 1


The steering vector basically applies the delay according to the spatial location of the Uniform Linear Array (ULA).

The multiplication by the complex exponential basically applies the delay.

The answer to your question is the Hilbert Transform.
You may use it to transform the data into Analytic Signal and then apply the algorithm.

For instance, I took 3 signals as in your question (Different phase) and set them a different angle of arrival.

I calculated the signal on each element of the array and applied MUSIC to get:

enter image description here

As you may see the algorithm found the spatial angle quiet easily (Well, this is a basic simulation).

Applying the same process just without the Hilbert Transform yield:

enter image description here

As one can see while the results are still accurate they are different.
The reason for that is for a different, and interesting on its own, question.

But it shows that there is no issue running the MUSIC algorithm on real signals.

The code is available at my StackExchange Codes Signal Processing Q82918 GitHub Repository (Look at the SignalProcessing\Q82918 folder).

Remark 001: I recommend reading Marcus Miller's answer to the question DOA - 1D Music Algorithm.

Remark 002: Another motivation for using "Real Valued MUSIC" is computation. So there are method that even in the case of a complex signal, the covariance is decomposed into Real Valued matrices in order to make the computation more efficient.


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.