Frage

ich habe eine Frage bezüglich der Verwendung von FFT. Funktion getBand(int i) Verwendung mit Minim i die Amplitude einer bestimmten Frequenz extrahieren, und tun ziemlich Karten davon. Funktioniert prima.

Dies ist jedoch ein eher eine Kuriosität Frage. Wenn ich an den beiden vom Spielen das gleiche Lied extrahierten Werte aussehen zweimal die gleiche Frequenz verwenden (so sollte die Amplitude identisch sein), aber ich erhalte sehr unterschiedliche Werte - warum dies

0.0,0.0,0.0,0.0,0.0,0.08706585,0.23708777,0.83046436,0.74603105,0.30447206
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08706585,0.4790409,0.9608221,0.83046436,0.74603105
War es hilfreich?

Lösung

Sind Sie sicher, dass die Eingänge sind genau die gleichen in beiden Fällen? Wenn Sie nur ein zufälliges Segment eines Songs nehmen dann die Ausgabe einer FFT wird sehr für verschiedene Ansatzpunkte in dem Lied.

Andere Tipps

Die MP3-Decodierung kann schuppig und / oder die Lead-in-Pufferung der fft Routine sein flockig sein könnte, (andere Länge der Stille vorhergehende Reihe). In diesem Fall sieht es aus wie die Lead-in ist um 2 Stufen größer in der zweiten Ausgabe.

Wenn dann das Zeitintervall, in dem die FFTs durchgeführt werden, ist länger als die fft Fenstergröße, einen Unterschied in der Lead-In kann auf ganz verschiedenen Teilen der Serie die fft Fenster zu Land verursachen, indem es die erklären könnte, verschiedene Werte später in den Ausgängen.

sollte die Situation klarer, wenn man die ‚Zeitauflösung‘ erhöhen kann (Anzahl der FFTs pro gegebener Zeit durchgeführt) -oder die fft Fenstergröße erhöhen, so dass die fft Messungen dünn gemacht Arent. Idealy sollten sie sich überlappen, bevor wir ein Muster passen zwischen den Scans erfolgt aus Schritt erwarten konnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top