iPhone FFT mit Accelerate Framework vDSP

8

Ich habe Schwierigkeiten, eine FFT mit vDSP zu implementieren. Ich verstehe die Theorie, suche aber bitte nach einem bestimmten Codebeispiel.

Ich habe Daten aus einer WAV-Datei wie folgt:

Frage 1. Wie setze ich die Audiodaten in die FFT?

Frage 2. Wie bekomme ich die Ausgabedaten aus der FFT?

Frage 3. Das ultimative Ziel ist es, nach niederfrequenten Geräuschen zu suchen. Wie würde ich das tun?

%Vor%

FFT-Code unten:

%Vor%

Danke

    
Simon 15.06.2011, 13:50
quelle

3 Antworten

9
  1. Sie geben Ihre Audio-Sample-Daten in den Realteil der Eingabe und setzen den Imaginärteil auf Null.

  2. Wenn Sie nur an der Größe jedes Fachs im Frequenzbereich interessiert sind, berechnen Sie sqrt(re*re + im*im) für jedes Ausgabefach. Wenn Sie nur an der relativen Magnitude interessiert sind, können Sie die sqrt löschen und nur die quadrierte Magnitude, (re*re + im*im) , berechnen.

  3. Sie würden sich die Größen der Behälter oder Behälter ansehen (siehe (2)), die Ihrer Frequenz oder Ihren Interessen entsprechen. Wenn Ihre Abtastrate Fs ist und Ihre FFT-Größe N ist, wird die entsprechende Häufigkeit für das Ausgabefach i durch f = i * Fs / N angegeben. Umgekehrt, wenn Sie an einer bestimmten Frequenz f interessiert sind, dann ist der interessierende Bereich, i , durch i = N * f / Fs gegeben.

Zusätzliche Anmerkung: Sie müssen eine geeignete Fensterfunktion anwenden (zB Hann alias Hanning ) zu Ihren FFT-Eingabedaten, bevor Sie die FFT selbst berechnen.

    
Paul R 15.06.2011, 14:07
quelle
5

Sie können die Äpfel-Dokumentation darüber überprüfen und sich gut um das Packen der Daten kümmern. Hier ist mein Beispiel

%Vor%     
quelle
0

Eine Sache, auf die Sie achten müssen, ist die DC-Komponente der berechneten FFT. Ich habe meine Ergebnisse mit der FFTW-Bibliothek-FFT verglichen und der Imaginärteil der mit der vDSP-Bibliothek berechneten Transformation hatte immer einen anderen Wert bei Index 0 (was 0 Frequenz bedeutet, also DC). Eine weitere Maßnahme, die ich anwendete, war die Teilung von Real- und Imaginärteilen um den Faktor 2. Ich schätze, das liegt an dem in der Funktion verwendeten Algorithmus. Beide Probleme traten im FFT-Prozess auf, nicht jedoch im IFFT-Prozess.

Ich habe vDSP_fft_zrip benutzt. Ich hoffe, das kann helfen.

Paolo

    
Paolo Turati 07.10.2015 14:53
quelle