因此,我对此进行了测试,现在可以确认以下几点:
1)numpy.convolve不是循环的,这是fft代码为您提供的:
2)FFT在内部没有填充2的幂。比较以下操作的不同速度:
x1 = np.random.uniform(size=2**17-1)x2 = np.random.uniform(size=2**17)np.fft.fft(x1)np.fft.fft(x2)
3)归一化没有区别-如果通过将a(k)* b(ik)加起来进行朴素的圆卷积,您将获得FFT代码的结果。
问题是填充到2的幂会改变答案。我听说过一些故事,有一些方法可以通过巧妙地使用长度的素数来解决这一问题(提到但未在《数字食谱》中进行编码),但我从未见过有人真正这样做过。



