How does Root-MUSIC algorithm for DOA estimation for a ULA work for a recorded audio file ?

Technical Source
2 min readDec 6, 2021


I’m trying to apply phased.RootMUSICEstimator for estimating azimuth angle of a sound source in a real-world scenario. I’m doing this by recording an audio file in a 2-element ULA and placing the sound source at a specific angle( say 20 degree azimuth, 0 degree elevation).

Below is the code I’ve written

% code
x = audioread('/home/LEFT/Setup tone low 20 left.wav');
y = audioread('/home/RIGHT/Setup tone low 20 right.wav');
mix = [x y];
fc = 700;
transducer = phased.OmnidirectionalMicrophoneElement...
array = phased.ULA('Element',transducer,'NumElements',2,...
yy = collectPlaneWave(array,[x y],[20 0;20 0]',fc);
sDOA = phased.RootMUSICEstimator('SensorArray',array,...
doas = step(sDOA,yy);
az = broadside2az(sort(doas),[0 0])

Here I used two mono-signals recorded separately using 2-different microphones(LEFT & RIGHT) in a ULA. From above program, I’m getting a perfect az = 20.0000 20.0000 as output.

My Questions: — I had approximated the angles of the sound sources to be around 20 degrees azimuth, So I don’t expect the sound source to be at exactly 20 degrees as evaluated by the algorithm. So it appears that the output is because of the collectPlaneWave function parameters. — Do I have to use collectPlaneWave function in my real-world audio already recorded at a specific source angle ? (I tried not using this, but azimuth angle given by algorithm was always zero.)

Could you please help me out with this ? Thanks.

NOTE:- provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.

In your example, you simulated the received signal at 20 degrees, that’s why the estimated result is 20 degree. In real life, if you already have the signal, then you don’t need to use collectPlaneWave. You just send the recorded signal in as two channels. This being said, RootMUSIC applies only to narrow band signals. So depends on your setting, it may or may not be the right algorithm for your task.

BTW, you should consider setting the propagation speed too. You are getting the matching result because the propagation speed is consistent among components. However, all of them are set to speed of light.




Technical Source

Simple! That is me, a simple person. I am passionate about knowledge and reading. That’s why I have decided to write and share a bit of my life and thoughts to.