我有一组消息,每条消息都有一个到达时间戳。我想分析该集合并确定消息到达的周期。 (这样,当后续消息迟到或丢失时,我就可以在一定程度上确定性地进行检测。)因此,离散傅里叶变换似乎是从集合中提取频率的逻辑选择。
但是,我所看到的离散傅里叶变换的所有解释都是从以恒定频率采样的一组有限值开始的。而我所拥有的只是一组值(单调递增的时间戳值。)
转换为时间序列数据?
我考虑过选择一个小分辨率——例如一秒钟——然后生成一个时间序列,从第一条消息的时间开始,到当前的实时时间,以及每个时间点的相应值 (0,1)。 (大部分是零,每条消息到达时都有一个。)
更多细节
我有很多组:我需要多次执行此计算,因为我有许多不同的组消息需要分析。每组消息可能有 1,000 条消息,实时跨度长达一年。因此,如果我将(正如我上面所想的)一组消息转换为时间序列;这大约有 3200 万(一年中的秒)时间序列数据点,只有大约 1,000 个非零值。
一些消息集更加频繁:在几天内大约有 5,000 条消息 - 因此这更像是大约 400,000 个时间序列数据点,但仍然只有大约 5,000 个非零值。
这是否合理(将到达时间转换为时间序列,然后进行简单的 FFT 工作)?或者是否有不同的方法将傅里叶变换应用于我的实际数据(消息到达时间)?
最佳答案
我建议您将消息计数放入适当持续时间的均匀间隔的容器中,然后将这些容器视为时间序列并从该序列生成频谱,例如使用基于 FFT 的方法。生成的频谱应将任何周期性显示为特定箱频率周围的峰值。
关于algorithm - 从消息到达时间戳中提取周期性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19182989/