2017-07-03 14 views
0

私は次元が255 x 255 x 255 x ...(50回).. x255である50次元配列を持っています。したがって、その合計は、浮動小数点数が50^255です。スコープの外にあるだけで、RAMにフィッティングすることさえ考えられます。さらに、私はこの配列の50次元高速フーリエ変換(DFT)を取る必要があります。私は普通のPCでPythonでそれを行うことはできません。私はGPU上でそれをやっていることも想像もできません。だから私はハードディスク・メモリの助けを借りなければならないと思っていますが、それはあまりにも巨大です。私はこれをリアルタイムで必要としません、私はそれが実行するための日を与えることができます。どのような機械が必要なのか、それとも可能なのかわからない。あなたのアドバイスを感謝します。スーパーコンピュータ、グリッド、または何かその高価な場合でも、私は投資を心配していません。巨大な多次元配列のn次元FFTを行うためのリソース

+2

それは255^50です.32ビットの浮動小数点数の場合、約8.4 * 10^120バイトです。すべてのデータを保存する場所を見つけることを幸運にしてください...宇宙には10^82個の原子があります。私はあなたがハードディスクの乾燥剤を使い果たしてしまうと思います – bazza

答えて

2

あなたfound enough universes to save your data inは、ここにあなたが何ができるかである場合:

フーリエ変換を使用すると、n個の計算かのように、他の後、各軸1のDFTを計算すると、あなたと同じ結果を与えることを意味し、分離可能です次元DFT:

for i in range(C.ndim): 
    C[...] = numpy.fft.fft(C, axis=i) 

ダブルチェック値は、2次元テンソルを使用して正しい場合(我々は、比較対象の2次元FFT numpy.fft.fft2持っているので):

import numpy 
A = numpy.random.rand(*[16] * 2) 
B = numpy.fft.fft2(A) 
C = A.astype(numpy.complex) # output vector for separable FFT 

for i in range(C.ndim): 
    C[...] = numpy.fft.fft(C, axis=i) 

numpy.allclose(C, B) # True