xcorr question - better align two signals
3 views (last 30 days)
Show older comments
Fan Mei on 6 Jan 2017
Commented: Fan Mei on 10 Jan 2017
I tried to align two signal better using the below code. The s1 and s2 is in the attached txt file. However, td I got is -24482. I am wondering if there is a way to improve this function. Please help!!
[C21,lag21] = xcorr(s2,s1);
C21 = C21/nanmax(C21);
[M21,I21] = nanmax(C21);
t21 = lag21(I21);
ny(-t21:end) = s1(-t21:end);
Jordan Ross on 10 Jan 2017
Unfortunately, the MATLAB functions that compute the sample cross-correlation from two provided sequences (such as "xcorr" in the Signal Processing Toolbox) cannot deal with incomplete data.
One possible solution is to find the NaN value's in the signals and to ignore the measurements (at that time value) for both sequences. The following code shows how you can remove those NaN's:
% Remove NaNs
s2NanLoc = find(isnan(s2));
s1NanLoc = find(isnan(s1));
nanLocs = unique([s1NanLoc; s2NanLoc]);
s1(nanLocs) = ;
s2(nanLocs) = ;
When I do this with your dataset I am able to get a "td" of 4.
More Answers (0)
Find more on Correlation and Convolution in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!