使用python-rfft时需要2的幂



我在python中使用numpy.fft来计算快速傅立叶变换。特别是,我使用rfft,因为我有一个真实的信号,不需要负频率。我的问题是:当我去计算FFT时,我的信号长度必须是2的幂吗?我的信号有184320个点,所以我想知道我是否需要在131072(2^17(处截断信号,或者用零填充信号,使其长度为262144(2^18(?我的下一步是做开窗,所以我想在做任何进一步的事情之前,确保我已经正确地执行了FFT。

您不必填充信号。NumPy中的FFT实现对于小素数因子的乘积数组长度是有效的,如README.md中所述,

有效的代码集可用于以下因素:

  • 2,3,4,5,7,11用于复值FFT
  • 2、3、4、5用于实值FFT

您的信号长度为184320 = 2**12 * 3**2 * 5,因此FFT应该能够有效地处理它。

最新更新