Я пытаюсь написать код Matlab для расчета расстояния между двумя микрофонами - PullRequest
2 голосов
/ 25 октября 2011

Настройки:
Звук воспроизводится через динамик, два микрофона расположены близко к динамикам, один микрофон ближе к динамику, чем другой.

Я должен написать код Matlab, чтобы определить расстояние между микрофонами.Следующий код создает случайный звук, воспроизводит его на динамиках и записывает звук одновременно (одновременно) с двумя микрофонами.y будет содержать два столбца данных.первый столбец - это входной сигнал от mic1, а второй столбец - это входной сигнал от mic2.

fs= 44100;     

sig = rand(1,fs);  
silence = zero(1,length(sig)');
sig = [sig;silence];    
wavplay(sig',fs,'async'); 
y = wavrecord(length(sig),fs,2);  

Следующий код - это то, что я придумал для вычисления расстояния:

x1 = y(:,1);
x2 = y(:,2);
[correlation,lags]=xcorr(x1,x2);  
delay_samples = lags(find(correlation==max(correlation)));  
speed = 343; % speed of sound is 343 m/s 
Ts=1/fs;  
time=delay_samples*Ts;
distance = speed/time;    

когда я пробегаю это, я получаю дистанцию, но я не уверен, правильно ли это!
МОЙ МЕТОД ПРАВ ИЛИ НЕПРАВИЛЬНО?

Ответы [ 3 ]

2 голосов
/ 25 октября 2011

Как вы сформулировали, ваш расчет не даст абсолютного пространственного расстояния между двумя микрофонами. Он, скорее, рассчитает относительную разницу между расстояниями между динамиком и каждым микрофоном.

В качестве мысленного эксперимента рассмотрим два микрофона, которые изначально были расположены рядом друг с другом. Поскольку звук из динамика поступает на обе микрофоны одновременно, ваша формула скажет, что расстояние между двумя микрофонами равно 0. Теперь начните перемещать два микрофона друг от друга по линии, касательной к динамику. Две микрофоны остаются на одинаковом расстоянии от динамика, и, таким образом, звук из динамика поступает на обе микрофоны одновременно (и, следовательно, ваша формула говорит, что они находятся рядом друг с другом).

1 голос
/ 25 октября 2011

Если вы разместите обе микрофоны на одной прямой линии от динамика, вы сможете использовать свою формулу.

Например, микрофон 1 на расстоянии 1 метр и микрофон 2 позади него, но на 3 метре.

1 голос
/ 25 октября 2011

Чтобы добавить к MusiGenesis 'ответ, ваши вычисления не приведут (просто) не к получению расстояния - мысленный эксперимент, изображенный там, на самом деле показывает, что его невозможно вычислить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...