Настройки:
Звук воспроизводится через динамик, два микрофона расположены близко к динамикам, один микрофон ближе к динамику, чем другой.
Я должен написать код 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;
когда я пробегаю это, я получаю дистанцию, но я не уверен, правильно ли это!
МОЙ МЕТОД ПРАВ ИЛИ НЕПРАВИЛЬНО?