关于如何计算TDOA(到达时间差)的简单明了的示例

时间:2018-09-05 19:57:21

标签: javascript math

尝试计算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.');

1 个答案:

答案 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(请注意那里的参数顺序!)。