Toolbox Phased - GCC Estimate of Direction of Arrival at Microphone Array - MATLAB Example

5 views (last 30 days)
I'm running the example from MATLAB help for DOA estimation - "GCC Estimate of Direction of Arrival at Microphone Array". Since my medium is water, I changed the propagation speed c to be 1500 m/s. The rest of the example is unchanged. Although the propagation speed appears as a parameter at the signal collector "sWBC = phased.WidebandCollector" and at the estimator "gxcorr = phased.GCCEstimator", the direction of arrival changes drastically as c is changed from 340 m/s to 1500 m/s (at the later, the error is 15 degrees). What am I missing?

Answers (2)

Honglei Chen
Honglei Chen on 19 Jul 2016
You may want to check the spacing of the array and the sampling rate. The GCC algorithm essentially does a correlation between channels. If your propagation speed relative to the spacing and the sampling rate is too high, then essentially the signal across two channels look the same and the correlation will start to give you dubious answers due to noise peaks. In this particular example, the sample difference can be computed by
n = d*sind(theta)/c*Fs
If you use the original parameters, n is close to 2 samples. If you simply change the propagation speed to 1500, then the difference is only 0.3 samples and the algorithm cannot distinguish between certain channels. Now, since you've increased the propagation speed from 340 to 1500, if you increase the spacing proportionally to 1.1, then the estimation result will be correct again. HTH

Amjad Iqbal
Amjad Iqbal on 16 Nov 2018
Hello Researchers!
I am working on project named Drone detection and Direction of arrival estimation.
I have recorded sound of drone fly in real noisy environment using four microphone. First i need to suppress noise from these data bases of bin files to get only drone sound. Secondly, main task is to drive Direction of arrival of drone using its acoustic sound signature. I need help to complete this project with best efficient method.
I have made four channels of drone sounds recorded different days and places. Kindly guide me by which process i can remove noise from these auido bin files (i.e, MUSIC, Noise Coverience matrix, Windowing method or else) and which method is suitable to detect drone only (i.e, Linear Predictive coding, ZCR, Cross Correlation, Eigen vector decomposition etc). I need help to derive DOA using GCC method (i.e GCC-PHAT or GCC ML).

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!