How to normalise a FFT of a 3 variable function.
Show older comments
I have this function:
input = exp(-((W-w_o).^2)/deltaW.^2).*exp(-(Kx.^2+Ky.^2)/(deltaK.^2)).*exp(1i.*sqrt((W/c).^2-(Kx.^2+Ky.^2)).*z(j));
this is then fourier transformed:
fourier = fftn(input)
I need to normalise it. Dividing it by length() is not giving good results. Could someone please help!
1 Comment
Rena Berman
on 19 Sep 2019
(Answers Dev) Restored edit
Answers (3)
To normalize so that the continuous Fourier transform is approximated, multiply by the sampling intervals, dT1*dT2*dT3
7 Comments
J K
on 11 Jul 2019
Matt J
on 11 Jul 2019
If you don't know what the goal is then no one does...
J K
on 11 Jul 2019
Matt J
on 11 Jul 2019
Well, maybe this:
F = fftn(input);
F=F/norm(F(:));
J K
on 11 Jul 2019
Maybe also
F=F*sqrt(T1*T2*T3)/norm(F)
where T1,2,3 are the sampling distances.
J K
on 12 Jul 2019
To normalize so that Parseval's equation holds, divide by sqrt(numel(input)).
To normalize so as to obtain Discrete Fourier Series coefficients, divide by N=numel(input).
Categories
Find more on Frequency Transformations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!