Я пытаюсь преобразовать Фурье довольно большой вектор (до n = 2**30
). Когда это происходит, происходит сбой Python (появляется всплывающее окно с сообщением, что Python перестал работать). Подумав, возможно, у меня заканчивается память (хотя у меня есть 128 ГБ), попытался преобразовать Фурье немного меньшие векторыРаботает с n = 2**28
, занимает около 210 с. Однако, когда я пытаюсь n = 2**29
, это не работает:
import numpy as np
N = 2**29
x = np.random.rand(N)
X = np.fft.fft(x)
Выдает ошибку:
c:\program files\python36\lib\site-packages\numpy\fft\fftpack.py in fft(a, n, axis, norm)
190 if n is None:
191 n = a.shape[axis]
--> 192 output = _raw_fft(a, n, axis, fftpack.cffti, fftpack.cfftf, _fft_cache)
193 if _unitary(norm):
194 output *= 1 / sqrt(n)
c:\program files\python36\lib\site-packages\numpy\fft\fftpack.py in _raw_fft(a, n, axis, init_function, work_function, fft_cache)
63 wsave = fft_cache.pop_twiddle_factors(n)
64 if wsave is None:
---> 65 wsave = init_function(n)
66
67 if a.shape[axis] != n:
ValueError: negative dimensions are not allowed
Что здесь происходит? Ограничен ли nfty fft n = 2**28
?