Самый простой способ сделать это с помощью функции "xcorr". Это часть панели инструментов обработки сигналов для Matlab, но она должна быть доступна для GNU Octave здесь . Я не проверял, полностью ли совместим октавный скрипт с MATLAB.
Вы можете использовать функцию xcorr как:
[correlation,lags] = xcorr(x,y);
Значение задержки можно найти с помощью
delay = lags(find(correlation==max(correlation)))
При скорости света сигнал будет распространяться со скоростью 3 x 10 ^ 8 м / с, поэтому, чтобы получить разрешение 50 м, необходимо производить выборку как минимум (3e8 / 50 м) = 6 МГц. При такой частоте дискретизации каждое отставание будет 1/6000000 секунды. Если вы умножите задержку на это значение, вы получите общее время между передачей и приемом сигнала. Умножьте это время на скорость света, чтобы получить расстояние.