对于两个偏移采样数据系列,它们之间偏移的最佳估计是多少?

机器算法验证 时间序列 互相关
2022-04-03 12:50:01

我有以均匀时间间隔采样的一维数据系列;它们很嘈杂,但具有完全相同(未知)的基础曲线 - 有一个区别:它们在时间上被一些未知的 tau 抵消。该 tau 的最佳(最稳健)估计是多少?另外,什么是可以快速计算的估计值(这不是分布的时刻之一)?

2个回答

为此可以使用互相关函数的最大值。

http://en.wikipedia.org/wiki/Cross-correlation

(至少我知道它已成功用于 EEG 时间序列分析,Woody 的论文)。

这是一个例子,我一起破解:

在此处输入图像描述

上图显示了两个嘈杂的啁啾信号,红色的信号偏移了大约 80 个采样点。互相关图显示正确偏移处的清晰峰值。在 MATLAB 中,您可以使用

[xc,lags]=xcorr(y1,y2);
[m,i]=max(xc);
tau=lags(i);

其中 y1 和 y2 是两个输入信号。

这是生成图形的 MATLAB 代码:


% generate 2 signals
t = 0:0.001:0.5;            
y = chirp(t,0,1,150);
y2= [cos(0:0.1:2*pi) y];
y2= y2(1:size(y,2));

% add noise
yr =y +0.9*rand([1 size(y,2)]);
y2r=y2+0.9*rand([1 size(y,2)]);

% plot signals
subplot( 2,1,1)
plot(yr);
hold on
plot( y2r, 'r');
hold off

% plot cross-correlation
subplot( 2, 1,2)
[z, lags]=xcorr(yr, y2r);
plot( lags, z(1:end));

这个问题被称为“时间延迟估计”。如果假设延迟(“tau”)是恒定的,则最常用的技术是基于在互相关函数上搜索最大值。但是有一些改进,其中许多对应于一些“广义互相关”(在概念上类似于对信号应用一些预均衡),我在“SCOT”广义相关方面取得了很好的结果。论文很多,搜索“广义相关”“时间延迟”“SCOT”“PHAT”例如:http ://dodreports.com/pdf/ada393232.pdf 。