How to set the distance in DOA algorithm?

Hello everyone, I am trying to localize narrowband signals with microphone Arrays using DOA algorithm. As you know in this algorithm we have to enter the position of the incoming source with Azimuth and Elevation angles, but we dont consider the distance between the microphone Array and the source. I want to know that how it is possible to set this distance. Thanking you.

 Respuesta aceptada

Honglei Chen
Honglei Chen el 2 de Nov. de 2016

0 votos

Could you elaborate which algorithm you are trying to use? The assumption for DOA algorithms in Phased Array System Toolbox is that the incoming signal is a plane wave. Therefore that distance doesn't matter. If you need that distance, maybe you are dealing with a spherical wavefront?
HTH

3 comentarios

Ali Movahed
Ali Movahed el 2 de Nov. de 2016
Editada: Honglei Chen el 2 de Nov. de 2016
thanks for your Response. I am using MVDREstimator 2D to localize two sources and you are right, I Need the distance because I want to deal with spherical waves. here is my code:
h = phased.ConformalArray();
t= 1/2*(1+sqrt(14));
n=32;
c= ones(n,1)';
c(:)=1:32;
h.ElementPosition = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;(sqrt(c).*cos(2*pi*t*c))*0.018;(sqrt(c).*sin(2*pi*t*c))*0.018];
h.ElementNormal = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;0 0 0 0 0 ...
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
h.Element = ...
phased.OmnidirectionalMicrophoneElement('FrequencyRange',[50e3 500e3]);
ang1 = [20; 35]; % First signal
ang2 = [-20; 35]; % Second signal
angs = [ang1 ang2];
c = 343;
fc = 5e2; % Operating frequency
lambda = c/fc;
pos = getElementPosition(h)/lambda;
Nsamp = 1000;
nPower = 0.01;
rs = rng(2007);
x = sensorsig(pos,Nsamp,angs,nPower);
broadsideAngle = az2broadside(angs(1,:),angs(2,:));
hMVDR = phased.MVDREstimator2D('SensorArray',h,...
'PropagationSpeed',c,'OperatingFrequency',fc,...
'AzimuthScanAngles',-45:60,'ElevationScanAngles',10:60,...
'DOAOutputPort',true,'NumSignals',2);
[~,ang] = step(hMVDR,x);
plotSpectrum(hMVDR);
could you please tell me how can I consider spherical waves?
Honglei Chen
Honglei Chen el 3 de Nov. de 2016
If you need to deal with spherical wavefront, then the MVDREstimator2D cannot help much. This being said, I notice several things.
1. your application seems to be microphone related. Your fc is set to 500 Hz but your element's frequency is between 50k and 500k Hz. This means that at 500Hz there is no response to the signal. You may need to consider changing that.
2. Your wavelength is about 0.6 meters. I think if your array is, say 5-6 meters away, then the plane wave assumption may not be a bad choice.
HTH
Ali Movahed
Ali Movahed el 7 de Nov. de 2016
thank you for the tipps. actually that 500 Hz was a mistake in my code and 500 kHz is correct. in this case, the wavelength would be too small (0.0006m). to be honest, I didnt get exactly whats the correlation between the distance and assumption of plane waves. is it like, when the Array is closer to the source I can assume spherical waves?

Iniciar sesión para comentar.

Más respuestas (0)

Preguntada:

el 2 de Nov. de 2016

Comentada:

el 7 de Nov. de 2016

Community Treasure Hunt

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

Start Hunting!

Translated by