Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
Announcements
This community is designed for sharing of public information. Please do not share Intel or third-party confidential information here.

Scale in DFT

de_la_Calle__Alejand
248 Views
Hello everyone:
I'm new in the forum. I'm wondering which is the correct scale of the mkl dft. I mean, I'm trying to do the fourier transform of a gaussian function, and I want to the forward fft and the backward fft normalized. I know that if I put the backward scale bscale=1/N (being N the size of the array) I get the original function normalized, but I want the transformed function (in frequency space) normalized.
If I put no scale (or default scale) i get the original function scaled by N*N, not N like the fftw, am I right?
I've tried with the forward and backward scale like the fftw, in the form:
fscale= dx/sqrt(twoPI) and bscale = dq/sqrt(twoPI),
being dq=twoPI/(N dx) and qmax=pi/dx (Nyquist sampling rules); but i get the wrong normalization.

thanks for the time,
Alex
0 Kudos
2 Replies
Dmitry_B_Intel
Employee
248 Views
Hi Alex,
MKL(both DFTI and FFTW3 interfaces) implements FFT as describedin MKL Reference Manual. Unless a forward or backward scale is explicitly set, the transform multiplies the L2 norm of the vector by sqrt(N). If you need forward transform to preserve the norm, then do DftiSetValue(hand, DFTI_FORWARD_SCALE, 1.0/sqrt(N) ) before committing the descriptor.
Thanks
Dima
de_la_Calle__Alejand
248 Views
Thank you very much. I'm going to try with 1/sqrt(N)
All the best,
Alex
Reply