Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我正试图编写一个matlab代码来计算两个麦克风之间的距离_Matlab - Fatal编程技术网

我正试图编写一个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米距离