I have two cosine signals in MATLAB both having a frequency of 100 Hz and the second signal has been delayed in time by 0.003 seconds. Both signals have been sampled at 1 Khz. When I use the cross correlation function and plot it to verify the delay between the signals, I expect to see a single point in time at which the signals are aligned but the plot looks symmetrical about the y axis. Why is that?
Also I am not sure about the sign convention here. Does a negative x axis value at the cross correlation peak denote time lag or does a positive x axis value denote time lag?
st=1/1000;
t=[0:999]*st;
s1=cos(2*pi*100*t);
t1=t-(3*st);
s2=cos(2*pi*100*t1);
[c,lags]=xcorr(s1,s2);
plot(lags,c/max(c))
Best Answer
It is not exactly symmetrical. Look where the autocorrelation has a maximal absolute value:
This returns
-3
, which corresponds to your delay of 0.003 s. The negative sign simply means that your second signal is delayed, not the first. If you swap them when callingxcorr
, like that:then the answer will be
3
. Now it's positive.