phase shift using xcorr
23 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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
0 Kommentare
Antworten (1)
VBBV
am 17 Mai 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
s3=circshift(s2,[0 iLag]);
figure;
plot(t,s1,t,s3)
1 Kommentar
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!