高效计算相关函数ñ时间_Nth观点

信息处理 fft 自相关 互相关 IFFT
2021-12-29 04:25:58

我想计算一个长度的长相关函数,比如 1e6 个点。我有一个先验知识,相关峰值将在 k*1000 点。有没有一种有效的方法来应用这些先验知识并执行更短的计算。

我不想根据定义计算相关性并实现 1000 个相关器。这个解决方案是不够的。批处理算法 (FFT) 始终是可能的,但它没有使用上述结构。

3个回答

如果你有一个长度的信号N你可以计算长度的自相关函数K=2N1.你需要表演N相关函数的每个值的乘法rxx或者换句话说,您需要一个相关器。所以你需要尽可能多的相关器rxx函数长度是。如果您想在滞后中找到相关性0使用一个相关器。您可以计算任何滞后的相关性i(N+1...N1)通过一个相关器,信号适当地偏移i次。从另一边FFT方法可以让你找到N循环自相关函数的抽头仅通过一个FFT手术。因此,如果您只需要几个相关值,它就不是最优的。

将序列重塑为 1000 个序列,每个序列包含相隔 1000 的点,原始序列的 k*1000 自相关将是新序列的 k 个自相关之和。

您可能会通过 FFT 进行关联,因此效率增益为 log(1000),而不是很大。但是,告诉您相关性在 k*1000 处达到峰值的知识也可以让您在不进行完整计算的情况下获得足够准确的估计。例如,对于平滑信号,附近对总相关性的贡献应该非常相似,并且您可以通过仅计算每十分之一来获得非常好的估计。

这让我想起了在 MS DOS 下使用 C 语言编写相关例程的日子。所有代码数据都必须放在小于 640 KB 的内存空间中。. .

如果您想要在一个时间窗口内进行相关输出,而您有很长的记录,您可以拆分这些记录并使用重叠相加方法在傅立叶域中进行相关。将所有段添加到傅立叶域后,您可以执行逆 fft 以获取您的时域响应。

关键短语是“重叠相加”。