I need to align 3 signals by cross correlation

조회 수: 11 (최근 30일)
Jorge Garcia Garcia
Jorge Garcia Garcia 2022년 11월 21일
댓글: Star Strider 2022년 11월 21일
I have 3 signals. I am using the code in https://uk.mathworks.com/help/signal/ug/align-signals-using-cross-correlation.html. My problem is the following. In my case I cannot represent the graph with the three signals, so I need to generate a code that can align them without knowing a priory which one lags or leads.
I have been trying different options and I cannot seem able to find the way. The following code seems to work sometimes :S
%compare 2-1// 3-1
[C21,lag21] = xcorr(s2,s1);
[M21,I21] = max(C21);
t21 = lag21(I21);
[C31,lag31] = xcorr(s3,s1);
[M31,I31] = max(C31);
t31 = lag31(I31);
% compare 3-2 1-2
[C32,lag32] = xcorr(s3,s2);
[M32,I32] = max(C32);
t32 = lag32(I32);
[C12,lag12] = xcorr(s1,s2);
[M12,I12] = max(C12);
t12 = lag12(I12);
%compare 1-3//2-3
[C13,lag13] = xcorr(s1,s3);
[M13,I13] = max(C13);
t13 = lag13(I13);
[C23,lag23] = xcorr(s2,s3);
[M23,I23] = max(C23);
t23 = lag23(I23);
if t23<0
s3 = s3(-t23+1:end);
if t21>0
s2 = s2(t21+1:end);
else
s1 = s1(-t21+1:end);
end
else
s2 = s2(t23:end);
if t21<0
s1 = s1(-t31+1:end);
else
s2 = s2(t21+1:end);
end
end

답변 (1개)

Star Strider
Star Strider 2022년 11월 21일
The alignsignals function (or simlar functions such as findsignal) could do what you want. With 3 signals, it would be necessary to run it 1 time for each pair of signals (e.g. 1,1; 1,2; 1,3; 2,3) and then check the results, and repeat until you are satisfied with the result.
I am not certain if it would be possible to align all 3 signals at the same time.
  댓글 수: 2
Jorge Garcia Garcia
Jorge Garcia Garcia 2022년 11월 21일
Thanks.. will try. This is driving me mental
Star Strider
Star Strider 2022년 11월 21일
My pleasure!

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

카테고리

Help CenterFile Exchange에서 Correlation and Convolution에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by