2017-07-03 81 views
0

我有一個50維的數組,其維數爲255 x 255 x 255 x ...(50倍).. x255。所以它總共有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,這裏是你能做什麼:

傅立葉變換是可分離的,這意味着在其他以後計算每個軸一個的DFT會給你同樣的結果,如果你所算出的n維DFT:

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

雙重檢查,如果該值是正確使用2D張量(因爲我們有一個2D 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 
相關問題