在计算大小为150万项的数组的FFT时:
import numpy as np
from scipy.fftpack import fft
x0 = np.ones(1492828, dtype=np.int32)
fft(x0)
print 'hello'FFT计算永远不会完成,程序也冻结了。如果我将1492828更改为1492827,它似乎会起作用。但是如果我将1492828改为1492826,它仍然会结冰,这有点奇怪。
这是已知的窃听器吗?
注意:
发布于 2018-05-15 09:28:16
通常的快速傅立叶变换算法对于长度小的素数因子来说要快得多,正如here所解释的那样。
解决方案是将数组零点到下一个2倍的幂:
def zeropad_nextpoweroftwo(A):
return np.concatenate([A, np.zeros(int(2 ** np.ceil(np.log2(len(A))))-len(A),
dtype=A.dtype)])或者,更容易/更好的解决方案是使用next_fast_len和fftpack.fft的第二个参数允许自动执行零填充:
fftpack.fft(a, next_fast_len(len(a)))https://stackoverflow.com/questions/50346006
复制相似问题