我有两个想要同步的信号(找时滞)。 我已经使用" 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中做到这一点的任何提示?
我知道fft
和ccf
功能,但不知道如何整合它们。
答案 0 :(得分:1)
两个复函数的互相关等于一个函数的卷积和另一个函数的复共轭:
Cross correlation and convolution
由于R中的函数convolve
已经使用快速傅立叶变换,您所要做的就是:
convolve(my.vector1, my.vector2)
最大滞后可以通过以下方式找到:
which.max(convolve(my.vector1,my.vector2))