FFT Implementation
-
Könnt ihr performante FFT Implementierungen empfehlen, die eine relativ modernem C++ API bereitstellen?
Was wird da aktuell so verwendet?
-
Der Standard bei Open Source Sachen ist soweit ich weiss FFTW.
http://fftw.org/
http://fftw.org/fftw3_doc/Ist auch halbwegs flott. Ist ne reine C Library. Ich wüsste aber auch nicht was da beim Interface besonders interessant sein sollte. Wenn es dir nicht passt, schreib ne Wrapperfunktion.
Und was das Layout der Daten im Speicher angeht, da musst du dich sowieso an der FFT Library orientieren. Da mit Iteratoren o.ä. rumzumachen würde die Performance total vernichten.
-
Wenn du ggf. mehr mit Physik machst, könnte https://root.cern.ch/doc/master/classTVirtualFFT.html in Frage kommen. Das ist aber auch nur ein "Unmodern C++" Wrapper um fftw3
-
Die MKL ist mittlerweile unter bestimmten Umständen ebenfalls kostenlos nutzbar. Auf Intel64 Systemen ist das eine gute Wahl. IMHO gibt es nun ein FFTW Interface.
-
Ich benutze da zwar die FFT nicht, aber sonst bin ich mit Armadillo recht glücklich. (http://arma.sourceforge.net/docs.html#fft). Allerdings: "The implementation of the transform in this version is preliminary; it is not yet fully optimised"...