博主在某次实验中,相同的实验条件下分别采集了两组数据,发现两组数据存在一个延时,如下图所示:
本文记录消除这个延时,实现相同数据状态的对齐效果,采用MATLAB自带的xcorr
函数实现,具体步骤如下:
- step1: 导入两组数据,并将其分别存储在两个向量(例如
data1
和data2
)中 - step2: 使用xcorr函数计算两组数据的互相关系数,使用方法为:
xc = xcorr(data2, data1);
- step3: 找到互相关系数的峰值及其位置,可以使用
findpeaks
函数来查找互相关系数的峰值,然后使用max
函数找到最大峰值的位置 - step4: 根据找到的延时值对
data2
进行对齐,通常我们使用原数据的头或尾进行数据补齐
代码如下:
% 使用xcorr函数计算两组数据的互相关系数
xc = xcorr(data2, data1);
% 找到互相关系数的峰值及其位置
[peaks, locs] = findpeaks(xc);
[~, idx] = max(peaks);
delay = locs(idx) - length(data1);
% 对数据进行处理,使用第一个值或最后一个值进行数据补齐
if delay > 0
data2_aligned = [data2(delay+1:end), ones(1, delay)*data2(end)];
else
data2_aligned = [ones(1, -delay)*data2(1), data2(1:end+delay)];
end
最终实现效果如下:
参考链接:
- https://ww2.mathworks.cn/help/matlab/ref/xcorr.html;jsessionid=ea8b98b50d13fc92e3e2d26735cb
- https://blog.csdn.net/weixin_39509073/article/details/127613031