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

doa estimationmusic algorithmphasedPhased Array System Toolboxrootmusicestimator

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...
('FrequencyRange',[200,1200]);
array = phased.ULA('Element',transducer,'NumElements',2,...
'ElementSpacing',0.15);
yy = collectPlaneWave(array,[x y],[20 0;20 0]',fc);
sDOA = phased.RootMUSICEstimator('SensorArray',array,...
'OperatingFrequency',fc,'NumSignalsSource','Property','NumSignals',1);
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.

Best Answer

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