如何使用FFTW智慧

How to use PyFFTW's wisom

我没有在 pyfftw 的文档中看到有关如何使用 'wisdom' 功能的实际示例,所以我有点困惑。

我的代码如下所示:

# first FFT
input = pyfftw.zeros_aligned(arraySize, dtype='complex64')
input[:] = image
fftwObj = pyfftw.builders.fft2(input, planner_effort='FFTW_EXHAUSTIVE')
imageFFT = fftwObj(input)

wisdom = pyfftw.export_wisdom()

pyfftw.import_wisdom(wisdom)

# second FFT with the same input size but different input
input = pyfftw.zeros_aligned(arraySize, dtype='complex64')
input[:] = image2
fftwObj = pyfftw.builders.fft2(input, planner_effort='FFTW_EXHAUSTIVE')
imageFFT2 = fftwObj(input)

docsexport_wisdom 输出一个字符串元组,import_wisdom 接受这个元组作为参数。

我应该什么时候输出智慧,我应该为每个 FFT 将这个元组保存到一个文件中吗?

我什么时候加载回来?在调用每个 FFT 之前?

基本上,导出和导入智慧是一种在session秒之间保持状态的方法。

智慧是关于如何最好地规划 FFT 的知识。在session期间,内部"wisdom"由所有制定的计划和输入的智慧组成。重复导入相同的智慧文件没有用,因为该知识在第一次导入后就已经知道了。

当您希望使用有关特定转换计划的知识而不是必须重新制定时,您就输出了智慧。不过,它只需要为每个 session 计划一次转换。