我在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应该能够有效地处理它。