How to estimate DOA of acoustic signals correctly with phased.MVDREstimator2D?
10 views (last 30 days)
Show older comments
Hello, I am trying to simulate a microphone array with the Phased Array System Toolbox. I followed the example described in the document of MVDREstimator2D with default values and my own array ,and it worked well. But when I change the property 'PropagationSpeed' to 343m/s, it can no longer caluculate the azimuth and elevation angle of the signal.
microphone = phased.OmnidirectionalMicrophoneElement;
array = phased.URA('Size',[5 10],'ElementSpacing',[0.02 0.01],'Element',microphone);
viewArray(array);
hold on;
fs = 20000;
t = (0:1/fs:1).';
x1 = cos(2*pi*t*300);
x2 = cos(2*pi*t*400);
c_sound = 343;
arg = [-37 20];
x_receivedwaves = collectPlaneWave(array,x1,arg',c_sound);
noise = 0.1*(randn(size(x_receivedwaves))+1i*randn(size(x_receivedwaves)));
estimator = phased.MVDREstimator2D('SensorArray',array,...
'DOAOutputPort',true,'NumSignals',1,'PropagationSpeed',c_sound, ...
'AzimuthScanAngles',-50:50,...
'ElevationScanAngles',-30:30);
[~,doas] = estimator(x_receivedwaves + noise);
figure;
plotSpectrum(estimator);
2 Comments
George
on 22 Jan 2024
It looks like you are using propagation speed for the 4th argument in plane wave - propogation speed should be the 5th argument. The 4th argument should be carrier frequency.
This brings up another point - the concept of 'carrier frequency' implies the narrowband assumption - i.e. the modulating waveform is much lower frequency than the carrier waveform, which may not apply in the case of sound waves. I recommend looking at the use of the WidebandCollector for acoustic use cases in the following example:
I would recommend trying to see if your MVDR estimator works if you use the WidebandCollector to collect the received waveform.
Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!