我正试图编写一个matlab代码来计算两个麦克风之间的距离
设置:我正试图编写一个matlab代码来计算两个麦克风之间的距离,matlab,Matlab,设置: 从扬声器中播放声音,两个麦克风靠近扬声器,一个麦克风比另一个麦克风更靠近扬声器 我必须编写一个matlab代码来确定麦克风之间的距离。以下代码创建随机声音,在扬声器上播放,并使用两个麦克风同时录制声音y将包含两列数据。第一列是来自mic1的输入信号,第二列是来自mic2的输入信号 fs= 44100; sig = rand(1,fs); silence = zero(1,length(sig)'); sig = [sig;silence]; wavplay(sig
从扬声器中播放声音,两个麦克风靠近扬声器,一个麦克风比另一个麦克风更靠近扬声器 我必须编写一个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;
当我跑这个的时候,我得到了一段距离,但我不确定它是否正确我的方法是对的还是错的?正如您所说,您的计算不会产生两个麦克风之间的绝对空间距离。相反,它将计算扬声器和每个麦克风之间距离的相对差异
作为一个思维实验,考虑两个麦克风最初放置在彼此的旁边。由于扬声器发出的声音同时到达两个话筒,您的公式将表示两个话筒之间的距离为0。现在,开始沿与扬声器相切的直线将两个麦克风彼此移开。两个话筒与扬声器的距离保持相等,因此扬声器发出的声音同时到达两个话筒(因此,您的公式表明它们紧挨着彼此)。要添加到“答案”,它不是(仅仅)你的计算不会产生距离——这里描述的思维实验实际上表明,没有办法计算距离。如果你将两个话筒放在扬声器的同一条直线上,你应该能够使用你的公式 比如说 话筒1位于1米距离,话筒2位于其正后方,但位于3米距离