создать таблицу # temp1 (A int, B int)
вставить в # temp1 (a, b) значения (1001,1234), (1002,2235), (1003,2235), (1004 , 2235), (1005,2235), (1006,2235), (1007,3234), (1008,3234), (1009,3234), (1010,3234), (1011,3234), (1012,3234) ), (1013,3234), (1014,3234)
выберите *, row_number () over (разделите на порядок b на b asc) из # temp1
Не похоже, что существует любая функция, чтобы сделать это в функциях fft scipy (см. http://www.astro.rug.nl/efidad/scipy.fftpack.basic.html).
Если Вы не можете найти библиотеку FFT фиксированной точки для Python, маловероятно, что функция, которую Вы хотите, существует, так как Ваш формат плавающей точки собственного оборудования составляет 128 битов. Действительно похоже, что Вы могли использовать rfft метод для получения просто компонентов с реальным знаком (никакая фаза) FFT, и это сохранит половину RAM.
Я выполнил следующее в интерактивном Python:
>>> from numpy import *
>>> v = array(10000*random.random([512,512,512]),dtype=int16)
>>> shape(v)
(512, 512, 512)
>>> type(v[0,0,0])
<type 'numpy.int16'>
В этой точке RSS (Размер Резидентного набора) Python составлял 265 МБ.
f = fft.fft(v)
И в этой точке RSS Python 2.3 ГБ.
>>> type(f)
<type 'numpy.ndarray'>
>>> type(f[0,0,0])
<type 'numpy.complex128'>
>>> v = []
И в этой точке RSS снижается до 2.0 ГБ, так как у меня есть free'd против.
Используя "fft.rfft (v)" для вычислений действительных значений только приводит к RSS на 1.3 ГБ. (почти половина, как ожидалось)
Выполнение:
>>> f = complex64(fft.fft(v))
Хуже из обоих миров, так как это сначала вычисляет complex128 версию (2.3GB) и затем копирует это в complex64 версию (1.3GB), что означает пик, RSS на моей машине составлял 3.6 ГБ, и затем это успокоилось к 1.3 ГБ снова.
Я думаю, что, если у Вас есть 4 ГБ RAM, это должно все работать просто великолепно (как она делает для меня). Какова проблема?
Scipy 0.8 будет иметь поддержку одинарной точности почти всего кода fft (Код уже находится в соединительной линии, таким образом, можно установить scipy от svn при необходимости в функции теперь).