2014-12-31 37 views
2

我有兩個信號,我想同步(找到時滯)。 我這個用「CCF」的功能,並找到最大,下面這篇文章已經做了:如何使用R中的互相關和FFT同步信號?

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函數,但不知道如何整合它們。

+0

除非你添加一個特定的編程問題,否則這個問題必然會發生在垃圾場。 –

回答

1

的兩個複雜功能的互相關等於一個函數的卷積和其他的複共軛:

Cross correlation and convolution

作爲R的功能convolve已經使用了快速傅立葉變換,你需要做的是:

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

convolve(my.vector1, my.vector2) 

最大滯後可以通過發現