www.gusucode.com > signal 案例源码程序 matlab代码 > signal/CrossCorrelationOfPhaseLaggedSineWaveExample.m
%% Cross-Correlation of Phase-Lagged Sine Wave % This example shows how to use the cross-correlation sequence to estimate % the phase lag between two sine waves. The theoretical cross-correlation % sequence of two sine waves at the same frequency also oscillates at that % frequency. Because the sample cross-correlation sequence uses fewer and % fewer samples at larger lags, the sample cross-correlation sequence also % oscillates at the same frequency, but the amplitude decays as the lag % increases. % Copyright 2015 The MathWorks, Inc. %% % Create two sine waves with frequencies of $2\pi/10$ rad/sample. The % starting phase of one sine wave is 0, while the starting phase of the % other sine wave is $-\pi$ radians. Add $N(0,0.25^2)$ white noise to the % sine wave with the phase lag of $\pi$ radians. Set the random number % generator to the default settings for reproducible results. 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)); %% % Obtain the sample cross-correlation sequence for two periods of the sine % wave (10 samples). Plot the cross-correlation sequence and mark the known % lag between the two sine waves (5 samples). [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; %% % You see that the cross-correlation sequence peaks at lag 5 as expected % and oscillates with a period of 10 samples.