find the delay between two signals
43 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Yunyu Hu
el 13 de Mayo de 2022
Comentada: Yunyu Hu
el 16 de Mayo de 2022
I have two signals like following:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/997455/image.png)
They are the same length (200),
But d = finddelay(x,y) shows
d=0;
It cannot find the correct delay between them. Which function can be used here to get the right solution?
0 comentarios
Respuesta aceptada
Jonas
el 13 de Mayo de 2022
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 comentarios
Jonas
el 16 de Mayo de 2022
Editada: Jonas
el 16 de Mayo de 2022
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');
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!