fft function seemingly not evaluating correctly

10 views (last 30 days)
I have a function defined as an inverse fourier transform of a complicated weighting function. Normally I'd go to integral or trapz for such a task but I remembered that fourier transforms can famously be computed fast, so why not give that a shot. Since I've never used fft before, I thought to check how the results were scaled: there's always the confusion over the factor of \sqrt{2\pi}. So I ran a test on a standard normal and got this:
What am I not understanding here? Those should be the same line, right?

Accepted Answer

Sebastian
Sebastian on 22 Jul 2025
That took a lot longer for me to understand that I expected. Technically all the info I neede was in the Matlab documentation, but I really don't think it was clear what the function is actually doing.
If on the off-chance that someone else runs into this page from a complete misunderstanding of FFTs, this Desmos graph I made should help.

More Answers (2)

Torsten
Torsten on 18 Jul 2025
Edited: Torsten on 18 Jul 2025
syms x
f = 1/(2*sym(pi))*exp(-0.5*x^2);
fourier(f)
ans = 
The Gaussian Pulse example under
might help to understand the difference to fft.

Matt J
Matt J on 18 Jul 2025
Edited: Matt J on 19 Jul 2025
Pretty close. There are several issues with how you set up your axes, both in the original domain and the Fourier domain. For one thing, you need to sample on a wider time interval than [-5,5] to get good frequency-domain sampling. Also, you need to scale G by dt/sqrt(s*pi).
N=2^14;
T=100; %time sample on [-100,100]
AX=-ceil((N-1)/2):+floor((N-1)/2); %normalized axis
%Non-Fourier (time) domain
x=-AX*T/AX(1);
dt=(x(2)-x(1)); %time sampling interval
g = 1/(2*pi)*exp(-0.5*x.^2);
%Fourier domain
X=AX*pi/T; %frequency axis points (radians/sec)
G=fftshift(abs(fft(g)))*dt/sqrt(2*pi);
%Compare
skip=round(N/2^10);
h=plot(x(1:skip:end),g(1:skip:end),'ro', X,G,'-b');
xlim([-5,5]);
legend g G

Categories

Find more on Fourier Analysis and Filtering in Help Center and File Exchange

Products


Release

R2024b

Community Treasure Hunt

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

Start Hunting!