Signal Processing - Cross-Correlation to obtain Lag times.
11 views (last 30 days)
Show older comments
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
0 Comments
Accepted Answer
Wayne King
on 3 Nov 2011
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)
1 Comment
More Answers (1)
Trudy
on 3 Nov 2011
1 Comment
Wayne King
on 3 Nov 2011
The sampling interval is the inverse of the sampling frequency. So in the example I gave, the sampling frequency is 1000 Hz. Each lag in the cross correlation sequence then corresponds to a time of 1/1000 seconds.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!