Index

FFTW mit VB

FFTW ist eine hochperformante Bibliothek zur Berechnung der diskreten Fourier Transformation aus komplexen oder reellen Werten. Allerdings ist sie in C geschrieben und die erhältlichen Windows DLL Kompilate basieren auf der cdecl Calling Convention. Daher muss man sich einiger Tricks behelfen, um sie in VB verwenden zu können, ohne große Umwege zu gehen.

Meine Lösung ist, Maschinencode zu erstellen, der die Funktionen der Bibliothek aufruft, mit entsprechender Unterstützung für cdecl.

Funktionsweise

Mit FFTW eine FT zu berechnen, ist nicht weiter schwer:

Anmerkung: Mein Wrapper umfasst nur 1D Transformationen. FFTW unterstützt auch mehrdimensionale.

Download: FFTW Wrapper Modul

Benchmark

Dieses Programm vergleicht den bekannten von Murphy McCauley übersetzten FFT Algorithmus mit FFTW:

Benchmark

Download: FFTW Benchmark

Beispiel

Folgendes Beispiel zeigt, wie man mit FFTW ein Frequenzspektrum vom WaveIn berechnen kann (abgeändertes Programm vom WaveIn-Aufnahme-Projekt):

Frequenzspektrum
FFTW spart hier auf meinem System 20% CPU Auslastung ein (abgelesen am Windows Task-Manager).

Download: WaveIn FFTW Spektrum

Weiterführende Links

FFTW Homepage