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