尝试计算TDOA(到达时间差),但是我无法理解。有人可以帮我举一个简单明了的例子吗?
我有3个麦克风位于:
X0 = 0 cm
Y0 = 0 cm
-
X1 = 0 cm
Y1 = 15 cm
-
X2 = 0 cm
Y2 = 30 cm
声音到达3个麦克风的时间不同:
A0 = 0 sec
A1 = 0.002 sec
A2 = 0.004 sec
音速:
S = 340 m/sec
在收到wessel的回复后更新 我正在尝试使脚本计算TDOA
let ? = (Y1 - Y0) / (S); // = 0.00044
let ? = (Y2 - Y0) / (S); // = 0.00088
let VX = (X1 - X0) / A0; // = NaN
let VY = (Y1 - Y0) / A0; // = Infinity
let V = Math.sqrt(VX^2 + VY^2) // = 1.4142
let alpha = atan(VY / VX) // = NaN
console.log(alpha+' deg with the x-axis.');
答案 0 :(得分:0)
如果有距离和速度(距离/时间),则通过计算距离/速度=距离/(距离/时间)=距离/距离*时间=时间来获得时间。
您在问题中忽略的是声波的方向和形状。如果声音沿x轴传播,则形状无关紧要,时差为:
(A1 - A0) = (X1 - X0) / (340 m/s) = 0.15 / 340 s = 0.00044 s
(A2 - A0) = (X2 - X0) / (340 m/s) = 0.3 / 340 s = 0.00088 s
如果形状是直线,例如从无限远点源或特殊形状的非点源发出,到达时间的差异由声波方向的x分量给出:
VX = (X1 - X0) / (A1 - A0) = 37.5 m/s.
您给出的总声速为340 m / s,应该等于
V = Sqrt(VX^2 + VY^2)
这样您就可以解决
VY = Sqrt(V^2 - VX^2) = 338 m/s
或
VY = -Sqrt(V^2 - VX^2) = -338 m/s
以使您的声波必须以α角入射:
alpha = atan(VY / VX) = 83 deg
带有x轴。
不过,我不明白为什么javascript与之相关。以防万一:使用Math.sqrt,Math.pow或V * V,以及Math.atan或Math.atan2(请注意那里的参数顺序!)。