Borrar filtros
Borrar filtros

phase shift using xcorr

16 visualizaciones (últimos 30 días)
ZIYI LIU
ZIYI LIU el 17 de Mayo de 2022
Editada: ZIYI LIU el 17 de Mayo de 2022
Dear all, I have a question really need your help. I have two functions, and I want to know their phase shift based on the period, but not the lags.
Here is the code: (I just modified the code from other questions)
t = 1 :0.1: 20;
phaseshift= pi/2;
s1 = sin (2*t);
s2 = sin (2*t+ phaseshift);
figure(1); clf;
plot (t,s1,'r', t,s2,'k');
figure;
[c,lag] = xcorr(s1,s2);
plot(lag,c)
[c,lags]=xcorr(s1,s2);
[~,iLag]=max(c(find(lags==0):end))
s3=circshift(s2,[0 iLag]);
figure;
plot(t,s1,t,s3)
I know the lags, but how do I get the phase shift based on 2*pi? (eg. the phase shift betweenthese two lines is pi, 1/2 period, because 2*t)
Thank you very much!
BEST,
zIYI

Respuestas (1)

VBBV
VBBV el 17 de Mayo de 2022
t = 1 :0.1: 20;
phaseshift= pi/2;
s1 = sin(2*t);
s2 = sin(2*t+ phaseshift);
figure(1); clf;
plot (t,s1,'r', t,s2,'k');
figure;
[c,lag] = xcorr(s1,s2);
plot(lag,c)
[c,lags]=xcorr(s1,s2);
[~,iLag]=max(c(find(lags==pi):end)) % compare with pi
iLag = 1×0 empty double row vector
s3=circshift(s2,[0 iLag]);
figure;
plot(t,s1,t,s3)
  1 comentario
ZIYI LIU
ZIYI LIU el 17 de Mayo de 2022
Editada: ZIYI LIU el 17 de Mayo de 2022
Hi VBBV,
Yes, I got the lags of the max c is around 8, but how do I connect the x with phase shift?
For example, we don't know the phase shift, we only have two data like the lines, and want to know the phase shift between these two lines. Now, we have the lags is 8, how do we know the phase shift is pi/2(or 1/4 period)?
Thanks!

Iniciar sesión para comentar.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by