以 16GB 記憶體計算fft,導致記憶體耗盡。
print(data_size)
freqs, times, spec_arr = signal.spectrogram(data, fs=samp_rate,nfft=1024,return_onesided=False,axis=0,scaling='spectrum',mode='magnitude')
輸出如下:
537089518
Killed
如何使用現有的python包計算大尺寸資料的fft?
uj5u.com熱心網友回復:
一個更通用的解決方案是自己做。由于著名的Cooley-Tukey FFT 演算法和多維分解,一維 FFT 可以拆分為更小的部分。有關此策略的更多資訊,請閱讀FFTW3 的設計與實作。您可以在虛擬映射記憶體中執行操作,以便更輕松地執行此操作。像 FFTW 之類的一些庫/包使您能夠相對輕松地執行快速就地 FFT。您可能需要撰寫自己的 Python 包或使用 Cython,以免分配非記憶體映射的額外記憶體。
另一種解決方案是將資料保存在 HDF5 中(例如使用h5py,然后使用out_of_core_fft,然后再次讀取檔案。但是,請注意,這個包有點舊,似乎不再維護。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/443158.html
下一篇:使用2D光柵陣列生成流圖
