find the delay between two signals
조회 수: 21 (최근 30일)
이전 댓글 표시
채택된 답변
Jonas
2022년 5월 13일
use xcorr(sig1,sig2), and use the max value of xcorr. the corresponding delay can be found at the corresponding value in the lag output (second output)
댓글 수: 3
Jonas
2022년 5월 16일
편집: Jonas
2022년 5월 16일
you are using the output not correctly. lag contains the corresponding lag value of the correlation calues of the first input. you need to find the lag value of the maximum correlation
dt=0.8;
x=[10,11,12,13,14,15,16,15,14,12];
t1=0:dt:(numel(x)-1)*dt;
y=[10,10,10,10,11,12,13,14,15,16,15,14,12];
t2=0:dt:(numel(y)-1)*dt;
figure;
original=subplot(3,1,1);
plot(t1,x); hold on; plot(t2,y);
title('original')
xlabel('time');
[corrVal,lag]=xcorr(x,y);
lagplot=subplot(3,1,2);
plot(lag*dt,corrVal,'-+');
xlabel('lag');
ylabel('xcorr value');
[~,maxCorrIdx]=max(corrVal);
lagAtMaxVal=lag(maxCorrIdx);
aligned=subplot(3,1,3);
plot(t1,x,'-*'); hold on; plot(t2+lagAtMaxVal*dt,y,'-s');
title('aligned');
xlabel('time')
linkaxes([original lagplot aligned],'x');
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!