В этом примере показано, как использовать последовательность взаимной корреляции для оценки фазового запаздывания между двумя синусоидальными волнами. Теоретическая последовательность взаимной корреляции двух синусоидальных волн на одной частоте также колеблется на этой частоте. Поскольку последовательность взаимной корреляции выборок использует меньше и меньше выборок при больших лагах, последовательность взаимной корреляции выборок также колеблется с той же частотой, но амплитуда уменьшается по мере увеличения запаздывания.
Создайте две синусоидальные волны с частотами рад/выборка. Начальная фаза одной синусоидальной волны равна 0, в то время как начальная фаза другой синусоидальной волны равна радиан. Добавьте ) белого шума к синусоидальной волне с фазовым запаздыванием δ радиан. Установите для генератора случайных чисел значения по умолчанию для воспроизводимых результатов.
rng default
t = 0:99;
x = cos(2*pi*1/10*t);
y = cos(2*pi*1/10*t-pi)+0.25*randn(size(t));Получить последовательность взаимной корреляции выборки для двух периодов синусоидальной волны (10 выборок). Постройте график последовательности взаимной корреляции и отметьте известное отставание между двумя синусоидальными волнами (5 выборок).
[xc,lags] = xcorr(y,x,20,'coeff'); stem(lags(21:end),xc(21:end),'filled') hold on plot([5 5],[-1 1]) ax = gca; ax.XTick = 0:5:20;

Вы видите, что последовательность взаимной корреляции достигает пика на запаздывании 5, как и ожидалось, и колеблется с периодом в 10 выборок.