FFT result looks nothing like analytic result
    13 views (last 30 days)
  
       Show older comments
    
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.
0 Comments
Answers (1)
  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
See Also
Categories
				Find more on Fourier Analysis and Filtering in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!