FFTW3 interface for MArrays
[Multidimensional Dynamic Arrays]

Classes

Files


Detailed Description

Interface to call libfftw3 FFT routines on MArrays up to rank 3.

Interface to fftw3 FFT library. Currently, each call to one of the FFT methods causes a new plan to be generated. This is highly inefficient, but safe. It guarantees that pointers to the data strorage of MArray do not escape by being stored in a plan that might survive the MArray object.

All transforms leave the output array un-normalized. To normalize (divide by number of elements) call normalize().

   #include <ltl/fftw.h>

   // example of 1-dimensional FFT using fftw3 library:
   MArray<double, 1> in(size);
   MArray<std::complex<double>, 1> out(size);
   FourierTransform<double,1> FFT;

   in = 10.0 +
        20.0 * sin(indexPosDbl(in,1) / double(size) * 2.0 * M_PI * 3.0) +
        30.0 * cos(indexPosDbl(in,1) / double(size) * 2.0 * M_PI * 4.0);
   FFT.FFT_Real2Complex(in,out);
   FFT.normalize(out);
   out = merge(real(out * conj(out)) > 1e-9, out, 0);
   std::cout << out << std::endl;

Generated on 19 Feb 2015 for LTL by  doxygen 1.6.1