How to estimate DOA of acoustic signals correctly with phased.MVDREstimator2D?
10 次查看(过去 30 天)
显示 更早的评论
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 个评论
George
2024-1-22
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.
回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!