我正在使用 FFTW3 在 C++ 中计算 2D 真实 FFT。我已经阅读了手册,但有一些问题。来自手册:http ://www.fftw.org/fftw3_doc/One_002dDimensional-DFTs-of-Real-Data.html#One_002dDimensional-DFTs-of-Real-Data
为了换取这些速度和空间优势,用户牺牲了 FFTW 复杂变换的一些简单性。首先,输入和输出数组的大小和类型不同:输入是n个实数,而输出是n/2+1个复数(非冗余输出);这也需要对输入数组进行轻微的“填充”以进行就地转换。其次,默认情况下,逆变换(复数到实数)具有覆盖其输入数组的副作用。这些不便都不应该给用户带来严重的问题,但重要的是要意识到它们。
我知道我需要将输入的 2D 矩阵转换为行顺序的 1D 向量。但是输出是什么样子的?n/2 + 1 个数字是什么意思?换句话说,我如何重新排序输出以获得二维矩阵?
我具体要做什么来创建这个“填充”?