How can I use cross-correlation as a tool to align two signals in MATLAB?
2 ビュー (過去 30 日間)
古いコメントを表示
I have two signals that have a similar behavior but are not aligned. I would like to use cross-correlation to align them.
採用された回答
MathWorks Support Team
2012 年 8 月 8 日
Correlation reaches a maximum value at the point where two signals are maximally correlated. You may therefore use this value to align them. The following code provides an example of how this can be done using the XCORR function in the Signal Processing Toolbox (see attached file variable_file.mat):
load variable_file
X1=xcorr(s1,s2); %compute cross-correlation between vectors s1 and s2
[m,d]=max(X1); %find value and index of maximum value of cross-correlation amplitude
delay=d-max(length(s1),length(s2)); %shift index d, as length(X1)=2*N-1; where N is the length of the signals
figure,plot(s1) %Plot signal s1
hold,plot([delay+1:length(s2)+delay],s2,'r'); %Delay signal s2 by delay in order to align them
grid on
0 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!