FFTW 库:如何正确绘制输出?

FFTW libray: how to properly plot an output?

我在使用 FFTW 库时遇到一些问题,我正在使用高斯函数测试快速傅立叶变换算法,因此我希望在进行变换时得到另一个高斯函数,这就是我得到的结果:

代码如下(我用的是C):

你能帮我看看我哪里错了吗?

问题不在于您所做的计算,而在于您对数据所做的解释。重要的是要考虑你已经通过的高斯以及它是如何相对于原点定相的。如果你也通过了以原点为中心的高斯,你可以期待一个真正的高斯ONLY。你得到一个乘以 exp(i*phase*omega) 的高斯分布,因为原始数据很可能不是以原点为中心的。如果您检查虚数值,您会发现它们相对于实部也在振荡和移相 M_PI*0.25。以零为中心的实函数的数据应该从 N/2N-1 的负值(以补充 N 的方式),然后从 0N/2-1 的负值阳性样本。很可能你将你的高斯集中在样本 N/2 周围(我刚刚检查过,你已经做到了这一点 :) )并且这在你的输出中产生了复杂的指数乘法。

此外,原点位于元素 0,因此它在原点处得到了正确反映。只需将您的输入高斯集中到同一点,看看它如何不显示这种振荡结果。