我有一個奇怪的問題與離散fft。我知道高斯函數exp(-x^2/2)的傅里葉變換又是相同的高斯函數exp(-k^2/2)。我試圖用MatLab和FFTW中的一些簡單代碼來測試,但我得到了奇怪的結果。FFTW和fft與MatLab
首先,結果的虛部不是零(在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-')
您可能將* continuous * FT與* discrete * FT混合在一起。高斯的連續FT是高斯函數,但我不確定DFT(FFT)是如此。 –
當然,離散性使得事物不精確,但離散FT被創建爲連續FT的近似值。當點數和間隔足夠大時,這裏就是這種情況,近似值應該是好的。會有一些偏差,但他們絕對不應該那麼大,如此係統。另外,當我增加Nx和Lx時,結果不會改變,這意味着收斂是可以實現的。 –
我認爲在你的DFT情況下可能會出現一個隱含的時間偏移,這就意味着頻域的相位旋轉 - 我認爲幅度是正確的,相位是一條直線(如果你是模2π不解開它,即鋸齒)。 –