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