Ясный и простой пример того, как рассчитать TDOA (разница во времени прибытия) - PullRequest
0 голосов
/ 05 сентября 2018

Пытаюсь вычислить 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 Я пытаюсь сделать скрипт calc 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 голосов
/ 06 сентября 2018

Если у вас есть расстояние и скорость (расстояние / время), вы получите время, выполнив расстояние / скорость = расстояние / (расстояние / время) = расстояние / расстояние * время = время.

То, что вы опускаете в своем вопросе, это направление и форма звуковой волны. Если звук распространяется вдоль оси 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 м / с, должна равняться

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 (остерегайтесь порядка аргументов там!).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...