MATLAB: Signal Processing – Cross-Correlation to obtain Lag times.

xcorr

I have written code that produces a graph giving the xcorr coeff of two stochastic electromyogram signals: sEMGL and sEMGbR. % x=(sEMGL); y=(sEMGbR); [c,lags]=xcorr(x,y,'coeff'); figure (8); plot (c,lags) % My question is how to write code in Editor so that in the command window I can type 'time lag =' to obtain this scalar value in milliseconds. A secondary question is to find the derivative of each signal in order to calculate the rate of change in each signal: to evaluate whether the time lag between the signals varies in relation to the rate of change in each signal.
Please help. Kind regards, Trudy

Best Answer

Hi, you need to know the sampling interval of course. Here I assume the sampling interval is 1 msec and delay one signal ten samples, 0.01 seconds.
dt = 1e-3;
x = randn(100,1);
y =[zeros(10,1); x(1:end-10)];
[c,lags] = xcorr(y,x,40,'coeff');
[~,index] = max(abs(c));
fprintf('Time lag = %2.3f seconds\n',lags(index)*dt)