【问题标题】:How to synchronize signals using a cross-correlation and FFT in R?如何使用 R 中的互相关和 FFT 同步信号?
【发布时间】:2014-12-31 01:06:20
【问题描述】:

我有两个信号要同步(找出时间延迟)。 在这篇文章之后,我已经使用“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 函数,但不知道如何集成它们。

【问题讨论】:

  • 除非您添加特定的编程问题,否则该问题将被绑定到垃圾场。

标签: r fft cross-correlation


【解决方案1】:

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

Cross correlation and convolution

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

convolve(my.vector1, my.vector2)

最大延迟可以通过以下方式找到:

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

【讨论】:

    猜你喜欢
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 2011-11-21
    相关资源
    最近更新 更多