【问题标题】:Fast Fourier Transform in RR中的快速傅里叶变换
【发布时间】:2012-12-10 05:48:13
【问题描述】:

我有一个数据集,其中包含动物在 12 个月内每小时访问的次数。我想使用快速傅里叶变换来检查周期性模式和周期性。过去,我为此使用过 Statistica;但是,我想使用 R 来绘制频谱密度与周期的关系图。有没有一种简单的方法可以在 R 中做到这一点?如果可能,我想确定 12 小时和 24 小时的活动高峰。

【问题讨论】:

    标签: r time-series fft period spectral-density


    【解决方案1】:

    您可以考虑以下功能。

    • 来自TSA 包的periodogram 立即绘制周期图。
    • periodogram from GeneCycle 返回频率列表和估计的功率谱密度。它是stats::spectrum 的包装函数,带有一些特殊选项集。
    • spectrum 来自 stats 允许您选择用于估计谱密度的方法:周期图或使用自回归过程。
    • cpgram 来自 stats 绘制累积周期图以及置信区间。

    请参阅 ?cpgram?spectrum 以了解所有详细信息,并记住,当函数名称一致时,例如 TSA::periodogramGeneCycle::periodogram

    网上也有大量关于如何使用这些功能的示例和教程。请参阅here 了解fft 的用法和here 以获得更广泛的教程。

    此外,您可能已经知道,必须对给定的时间序列进行去趋势化处理。因此,例如,使用diff(x) 而不是x。最后,您的时间序列的长度必须能被 12 整除,以便能够识别 12 小时和 24 小时的频率,这可以通过例如x[-(1:(length(x) %% 12))] 来实现,其中x 是一个去趋势的时间序列。

    【讨论】:

      【解决方案2】:

      使用spectrum 进行光谱密度分析;还有fft 用于基本快速傅里叶变换。

      【讨论】:

      • 你能详细说明一下吗?先对原始数据做fft,再用函数谱?
      • 不,spectrum 是一个独立的光谱密度分析仪;它调用 fft 并进行一些预处理和后处理以及绘图。
      • fft 的两个示例不先窗口化数据。唉,如果不使用例如测试它们很难找到正确的库窗口数据。斜坡信号。测试以确保。
      猜你喜欢
      • 2011-07-12
      • 2013-03-31
      • 2020-03-29
      • 2017-09-14
      • 2015-08-19
      • 1970-01-01
      • 2010-12-13
      • 2012-05-25
      • 1970-01-01
      相关资源
      最近更新 更多