我对离散 fft 有一个奇怪的问题。我知道高斯函数 exp(-x^2/2) 的傅里叶变换又是同一个高斯函数 exp(-k^2/2)。我试图用 MatLab 和 FFTW 中的一些简单代码来测试它,但我得到了奇怪的结果。
首先,结果的虚部不应该是零(在 MatLab 中)。
其次,实部的绝对值是高斯曲线,但没有绝对值的一半模式具有负系数。更准确地说,每一秒模式都有一个系数,它应该是负数。
第三,得到的高斯曲线的峰值(在取实部的绝对值之后)不是一而是高得多。它的高度与 x 轴上的点数成正比。但是,比例因子不是 1,而是接近 1/20。
谁能解释我做错了什么?
这是我使用的 MatLab 代码:
function [nooutput,M] = fourier_test
Nx = 512; % number of points in x direction
Lx = 50; % width of the window containing the Gauss curve
x = linspace(-Lx/2,Lx/2,Nx); % creating an equidistant grid on the x-axis
input_1d = exp(-x.^2/2); % Gauss function as an input
input_1d_hat = fft(input_1d); % computing the discrete FFT
input_1d_hat = fftshift(input_1d_hat); % ordering the modes such that the peak is centred
plot(real(input_1d_hat), '-')
hold on
plot(imag(input_1d_hat), 'r-')