Оценка времени полета с использованием взаимной корреляции
Я делаю эксперимент, чтобы найти фазовую скорость материала методом сквозной передачи. У меня есть два полученных сигнала на разном расстоянии в виде CSV-файлов. Вы можете увидеть рисунки ниже;
Я хочу использовать метод кросс-корреляции, чтобы найти время полета. Я использовал код Matlab для кросс-корреляции, который приведен ниже:
clc
clear all
% received signal 1
data = read_tektronix_csv('TEK0058.CSV');
plot(data.time, data.values)
s1=data.values;
%received signal 2
data = read_tektronix_csv('TEK0059.CSV');
plot(data.time, data.values)
s2=data.values;
[acor,lag] = xcorr(s1,s2);
Fs=1E9;
[~,I] = max(abs(acor));
lagDiff = lag(I)
timeDiff = lagDiff/Fs
figure
plot(lag,acor)
Этот код Matlab дал мне 3,17E-7 секунды как время полета. Истинное время полета должно быть 4.881E-5.
Как видно на рисунке ниже, взаимная корреляция была получена из двух полученных сигналов.
Есть ли проблема в алгоритме кода?
Спасибо.