如何在R中使用互相关和FFT同步信号?

时间:2014-12-31 01:06:21

标签: r fft cross-correlation

我有两个想要同步的信号(找时滞)。 我已经使用" ccf"在这篇文章之后发挥作用并找到最大值:

Finding lag at which cross correlation is maximum ccf( )

我虽然必须做像

这样的事情
fft1 <- fft(my.vector1)
fft2 <- fft(my.vector2)
ccf(fft1, fft2, lag.max = 6000, plot = FALSE)

然而,出于效率原因,我想实现与快速傅里叶变换(FFT)的互相关,如其他帖子中所建议的那样。 我有很多测试,有300,000个样本(在2000Hz下采样1.5分钟),最大延迟为-3到3秒。

关于如何在R中做到这一点的任何提示?

我知道fftccf功能,但不知道如何整合它们。

1 个答案:

答案 0 :(得分:1)

两个复函数的互相关等于一个函数的卷积和另一个函数的复共轭:

Cross correlation and convolution

由于R中的函数convolve已经使用快速傅立叶变换,您所要做的就是:

convolve(my.vector1, my.vector2)

最大滞后可以通过以下方式找到:

which.max(convolve(my.vector1,my.vector2))