文档说numpy的FFT基于FFTPACK。
在FFTPACK文档中,我发现以下内容:
子程序rffti(n,wsave)
子例程rffti初始化在rfftf和rfftb中都使用的数组wsave。计算n的素因式分解以及三角函数列表,并将其存储在wsave中。
标准的Cooley-Tukey算法是“具有时间抽取的基数2”,它递归地将大小
2*n为FFT的计算减少为大小为n的2个FFT,加上大小为2的n
FFT。存在相同的通用分解形式该算法可将大小
m*n为FFT的FFT转换为大小为m的n个FFT加大小为n的m个FFT。FFTPACK中的准备例程计算输入大小的素因数这一事实似乎表明这是他们正在做的事情。因此,除非您选择素数的元素,或者您的素数的素数非常大,否则您仍应获得相当不错的提速。
几年前,我写了有关Cooley-
Tukey算法的radix-2和通用分解版本的博客。阅读这些内容可能有助于了解NumPy内部的情况。



