FFT result looks nothing like analytic result

5 views (last 30 days)
Forgive me if I am missing understanding something simple here but I am confused by exactly what the FFT function returns in Matlab. I have code to compare the result of FFT to the analytic result of the fourier transform of a gaussian:
steps = 2^10; lim = 4;
x = linspace(-lim, lim, steps);
w = lim/4; A = 1;
func = A*exp((-1).*(x./w).^2); % Gaussian
Analytic = sqrt(pi)*w*exp(-(w*pi.*x).^2); % Analytic Transform
Func = fftshift(fft(func)); % FFT transform
When I plot this, the fft function looks nothing like the analytic result:
If anyone could shed some light on why this is and how I can adapt my use of the FFT function to give me back the analytic result I would greatly appreciate it!
I am asking this question as I have been developing some code to model the propagation of various beams through a turbulent medium using phase screens. For the code to be valid it is important that the Fourier Transforms produced agree with Physics.

Answers (1)

Rick Rosson
Rick Rosson on 6 Jan 2016
Edited: Rick Rosson on 14 Mar 2016
steps = 2^10; lim = 4;
dx = 2*lim/steps;
x = -lim:dx:lim-dx;
% x = linspace(-lim, lim, steps);
Fs = 1/dx;
dF = Fs/steps;
f = -Fs/2:dF:Fs/2-dF;
w = lim/4; A = 1;
func = A*exp((-1).*(x./w).^2); % Gaussian
% Analytic = sqrt(pi)*w*exp(-(w*pi.*x).^2); % Analytic Transform
Analytic = sqrt(pi)*w*exp(-(w*pi.*f).^2);
% Func = fftshift(fft(func)); % FFT transform
Func = dx*fftshift(fft(ifftshift(func))); % FFT transform
diff = abs(Func) - Analytic;
figure;
subplot(2,1,1);
plot(f,abs(Func),f,Analytic);
xlim([-4 4]);
subplot(2,1,2);
plot(f,diff);
xlim([-4 4]);
  2 Comments
Luna
Luna on 29 Feb 2016
Edited: Luna on 29 Feb 2016
Dear Rick,
I have troubles with exactly the same problem. I just tested your code and it produces, as in James example, an output fft function that do not agree with the analytical one. Can you explain why? Is there a reason? Thank you very much
Luna
Rick Rosson
Rick Rosson on 14 Mar 2016
They are the same to within +/- 3 x 10^-8.

Sign in to comment.

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!