필터 지우기
필터 지우기

Phase shift correction between 2 signals using cross-correlation

조회 수: 70 (최근 30일)
Sebsatien
Sebsatien 2015년 2월 18일
댓글: dpb 2022년 5월 17일
Hello
I'm in need of some help if you please.
I have 2 sinsoidal signals with a phase shift of 2Pi/3 between them. Basically, I need to eliminate the phase shift and obtain 2 signals with the same phase. I'm looking forward to use the cross-correlation, that represents the differnce between both signals (the phase shift, in our case), to do so.
My problem is to know how to use the cross-correlation to "correct" the shifted signal by eliminating the phase shift indiquated by the cross-correlation. Which operation to use to do so?
Here is a portion of the code for further understanding :
t = 1 : 1000;
phaseshift= 2*pi/3;
s1 = sin (2*pi*t/500);
s2 = sin (2*pi*t/500+ phaseshift);
figure(1); clf;
plot (t,s1, t,s2);
Axis_x = [-length(s1)+1 : 1 : length(s1)-1];
cross_corr = xcorr(s1,s2,'coeff');
figure(2); clf;
plot( Axe_x, coss_corr,'r');
Thanks in advance

채택된 답변

dpb
dpb 2015년 2월 18일
편집: dpb 2015년 2월 18일
[c,lags]=xcorr(s1,s2); % compute cross correlation; keep lags vector
[~,iLag]=max(c(find(lags==0):end)); % find the max in one-sided
s3=circshift(s2,[0 iLag]); % correct for the shift
For your case I get
>> [~,iLag]=max(c(1000:end))
iLag =
162
>> 2*pi*iLag/500
ans =
2.0358
>> phaseshift
phaseshift =
2.0944
This isn't perfect; illustrates even with pure sine
  댓글 수: 8
ZIYI LIU
ZIYI LIU 2022년 5월 17일
Hi dpb,
What if I don't know the functions of these two lines, but only two set of data like these two lines. Then I can have the lags, how do I know the phase shift? Thanks!
dpb
dpb 2022년 5월 17일
You know the number of lags and the sampling time, don't you?

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Sebsatien
Sebsatien 2015년 2월 19일
Thanks a lot dpb. I tried to keep the lags vector before and I haven't succeded doing so. Now Thanks to you, it's clear. I shall therefore test the code.

카테고리

Help CenterFile Exchange에서 Matched Filter and Ambiguity Function에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by