Kennst du eine gute und effiziente FFT? [geschlossen]

7

Ich versuche eine sehr schnelle und effiziente Fourier-Transformation (FFT) zu finden. Kennt irgendjemand von irgendwelchen guten. Ich muss es auf dem iPhone laufen, damit es nicht intensiv sein muss. Stattdessen, vielleicht weißt du eines, das Wavelet ist, ich brauche Frequenzauflösung, aber nur ein schmales Band (Vokalaudiobereich bis zu 10kHz max ... sogar 10Khz könnten zu hoch sein). Ich denke auch an das Abschneiden dieser FFT, um die Frequenzauflösung beizubehalten, während das unerwünschte Frequenzband eliminiert wird. Dies ist für ein iPhone

... Ich habe mir die FFT in Aurio touch angeschaut, aber es scheint, dass dies eine int FFT ist, aber meine App Floats verwendet ..... würde es eine große Leistungssteigerung geben, um das Programm an ein int anzupassen FFT oder nicht (was ich wirklich nicht tun möchte ... plus aurio touch verwendet eine Radix 2 FFT, die nicht so toll ist).

    
yan bellavance 20.10.2009, 03:53
quelle

6 Antworten

3

Die Leistung der FFTW setzt den Standard für FFTs mit beliebiger Länge - insbesondere für Nicht-Power von 2 Längen in 2 und größeren Dimensionen. Die kommerzielle Lizenz für FFTW beträgt $ 5000, die in Ihr Budget passen oder nicht.

Es klingt jedoch so, als ob Sie ein 1D-Signalverarbeitungsproblem haben. In diesem Fall haben Sie noch ein paar weitere Optionen - und wenn Sie Ihre Daten auf zweifache Länge auffüllen oder abtasten können, werden viele Bibliotheken vernünftig sein Performance. Sehen Sie sich diese Liste von FFT-Algorithmen an, die FFTW zum Vergleich verwendet hat - viele sind kostenlos und einige sind möglicherweise ausreichend. Ich würde wahrscheinlich mit guten alten numerischen Rezepten beginnen, die eine einfache Leistung von 2, 1D FFT bieten Implementation kostenlos und etwas Tipparbeit - und wäre sehr speichereffizient.

BTW - für die Stimme müssen Sie wahrscheinlich nur 3-4Khz gehen .... 10Khz ist weit oben für die menschliche Stimme.

    
Paul 20.10.2009, 06:17
quelle
12

Das iPhone OS4 SDK enthält das Accelerate-Framework , das (endlich) geben Sie uns Apple-geschriebene FFT-Funktionen

  

Beschleunigen bietet Hunderte von   mathematische Funktionen optimiert für   iPhone und iPod touch, einschließlich   Signalverarbeitungsroutinen, schnell   Fourier-Transformationen, Grundvektor und   Matrixoperationen und   Industriestandard-Funktionen für   Factoring von Matrizen und Lösen von Systemen   von linearen Gleichungen.

    
alexbw 02.05.2010 17:16
quelle
7

Ich habe Oouras FFT-Bibliothek in Objective-C eingepackt. Oouras Code ist vergleichbar mit FFTW, aber absolut kostenlos.

Dieser Code verwendet doppelte Genauigkeit und verfügt über mehrere integrierte Fenstertypen (rechteckig, Blackwell, Dreieck, Hamming). Ich benutze Oouras FFT-Code, um Welchs Methode zu implementieren, die im Laufe der Zeit ein viel glatteres Spektrum erzeugen wird. p>

Schau es dir an: Ссылка

    
alexbw 05.12.2009 19:44
quelle
4

Geben Sie die schnellste Fourier-Transformation im Westen ( FFTW ), die Leistung ist gut im Vergleich zu anderen, aber es ist nicht komplett frei. Siehe die Details zur kommerziellen Nutzung hier . Da es sich um eine c-Bibliothek handelt, sollte es kein Problem sein, sie als statische Bibliothek mit Ihrer iPhone-App zu verknüpfen.

    
hhafez 20.10.2009 04:44
quelle
2

Hier ist eine primäre Quellenverknüpfung zu Oouras numerischer Software:

Ссылка

Ich habe viele von Oouras FFTs über die Jahre hinweg benutzt, ich sollte ihm zumindest einen "Domo" schicken, und ich benutze seine echte radix-4 in mehreren iPad- und iPhone-Anwendungen in der Entwicklung. Ich habe den Code so übersetzt, dass er mit 32-Bit-Single-Precision für Performance auf ARM funktioniert. Betrachtet man die Baugruppe, die mit XCode 3.2.2 erzeugt wurde, vektorisiert sie mit NEON SIMD Anweisungen sehr schön. Ich war tatsächlich halb enttäuscht, da ich bereit war, den Code selbst für noch mehr Leistung ein wenig zu vektorisieren. Diese Optimierungen sind nicht möglich, ohne zuerst die FFT offensichtlich in einfache Genauigkeit zu übersetzen.

Während ich Objective-C schon seit vielen Jahren benutze, entwickle ich es aktiv und unterrichte sogar einen objektorientierten Programmierkurs. Ich habe einen solchen Wrapper nicht vorbereitet (obwohl ich das 1992 schon einmal gemacht hatte) verschiedene FFT) aus Leistungsgründen.

Ich habe FFTW in mindestens 10 Jahren nicht gegen Oouras FFT getestet, aber als ich das tat, war Oouras Bibliothek schneller für echte FFTs mit 1024 Punkten. Es ist jedoch durchaus möglich, dass FFTW jetzt viel besser ist - aber die Lizenzierung und Cross-Compilierung für ARM ist unbequem und ich habe immer gefunden, dass FFTW für meine DSP-Anforderungen viel zu sperrig und aufdringlich ist. Apples VecLib ist sehr nett, aber leider haben sie es nicht auf iPhoneOS portiert. Ich habe eine Feature-Anfrage in BugReporter geöffnet und Sie können auch: Ссылка

    
ctpenrose 02.05.2010 07:30
quelle
0

Wie bereits erwähnt, bietet das Accelerate Framework jetzt einige APIs, die Ihnen helfen könnten.

Überprüfen Sie:

Accelerate Framework Reference

vDSP-Referenz

Verwenden von Fourier-Transformationen

    
dwbrito 25.03.2013 21:27
quelle

Tags und Links