Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

Scale in DFT

de_la_Calle__Alejand
600 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
600 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
0 Kudos
de_la_Calle__Alejand
600 Views
Thank you very much. I'm going to try with 1/sqrt(N)
All the best,
Alex
0 Kudos
Reply