Wie erstelle ich ein Frequenz-Zeit-Diagramm?


9

Ich bin ein Chemieingenieur, kein EE, also ist das ein bisschen schwierig.

Ich versuche herauszufinden, wie man Amplituden-Zeit-Daten in Frequenz-Zeit-Daten umwandelt. Mein erster Instinkt ist, meine Daten in Blöcke zu schneiden, die FFT für jeden Block durchzuführen und diese dann zu zeichnen. Wenn die Zeitdauer jeder Schicht gegen Null geht, gibt es leider nicht mehr genügend Informationen, um genaue Frequenzinformationen zu erhalten (niedrige Frequenzen erfordern mehr als eine sehr kleine Zeitscheibe). Also ... wie mache ich das? Ich bin sicher, dass dies eine Art berühmtes Problem ist, das bereits jemand gelöst hat.

Hier ist die Art von Transformation, die ich suche, illustriert mit einer Schallwelle (Piano Note G). Wie Sie sehen können, besteht dieses Diagramm aus drei Achsen, wobei die dritte durch Farbe dargestellt wird.

Vielen Dank!

Geben Sie hier die Bildbeschreibung ein

Antworten:


5

Die Auflösung von Zeit und Frequenz ist ein bekanntes Problem, und es gibt tatsächlich Ansätze, um es zu überwinden. Für Audiosignale umfassen einige der häufig verwendeten Techniken: parametrische Methoden; adaptive Auflösung (Analyse mit verschiedenen Zeit- / Frequenzkonfigurationen und Zusammenfügen der Ergebnisse - Wen X. und M. Sandler, "Zusammengesetztes Spektrogramm unter Verwendung mehrerer Fourier-Transformationen"); Wavelets / Zerlegungen auf übervollständigen Basen; und Verwendung von Phaseninformationen, um den genauen Ort von Frequenzspitzen (IFgram) zu extrahieren.

Es scheint jedoch, dass das von Ihnen gezeigte Diagramm einige dieser Techniken nicht verwendet. Ich vermute also, dass dies nicht das ist, wonach Sie suchen. Auf der horizontalen Achse scheint es ein gewisses "Verschmieren" zu geben (zum Beispiel bei t = 1,2 s), und dies ist ein sicheres Zeichen dafür, dass die Analyse mit einer hohen Überlappung zwischen Blöcken durchgeführt wurde.

In der Tat müssen die Blockdauer und die Anzahl der Analyse-Frames pro Sekunde nicht miteinander verknüpft werden, wenn Sie zulassen, dass sich Frames überlappen. Wenn Sie also einen 40 ms langen Analyserahmen verwenden möchten, muss Ihr Raster nicht wie folgt sein:

Rahmen 1: t = 0 ... t = 40 ms; Rahmen 2: t = 40 ms ... t = 80 ms

Es könnte sehr gut sein:

Rahmen 1: t = 0 ... t = 40 ms; Rahmen 2: t = 10 ms ... t = 50 ms

Diese Überlappung kann die Illusion einer höheren zeitlichen Auflösung erzeugen, ohne die Größe des FFT-Fensters zu stark zu verringern. Beachten Sie, dass dies nur dazu beitragen kann, ein Ereignis auf der Zeitachse genau zu lokalisieren - es hilft nicht, zwei Ereignisse zeitnah zu lösen ... Genau wie das Erhöhen der FFT-Größe beim Ermitteln des Ortes einer Frequenzspitze helfen kann, nicht jedoch bei der Auflösung zweier benachbarter Frequenzspitzen.


Wie würden Sie in die andere Richtung gehen (Umwandlung von Spektrogramm in Audiosignal)
Peter

4

Ja, viele Leute haben an der Zeit-Frequenz-Analyse gearbeitet.

Der Ansatz "Meine Daten in Blöcke aufteilen, die FFT für jeden Block ausführen" ist eine gute Idee. Durch Anwenden einer "Fensterfunktion" auf jeden Block unmittelbar vor dem Ausführen der FFT können viele Artefakte vermieden werden. Das Überlappen von Blöcken hilft ebenfalls. Nach diesen Optimierungen erhalten Sie die Gabor-Transformation , die die beliebteste Kurzzeit-Fourier-Transformation (STFT) zu sein scheint.

Wie Sie bereits betont haben und wie der Wikipedia-Artikel hervorhebt, haben alle kurzfristigen Fourier-Transformationstechniken einen Kompromiss:

  • Wenn Sie die Zeitreihen in sehr kurze Stücke schneiden, erhalten Sie hochpräzise Zeitinformationen darüber, wann ein Ton genau startet und stoppt, aber die Frequenzinformationen sind sehr verschwommen.
  • Wenn Sie die Zeitreihen in sehr lange Stücke schneiden, erhalten Sie hochpräzise Frequenzinformationen über die genaue Frequenz eines Tons, aber die genaue Zeit, zu der er startet und stoppt, ist verschwommen.

Dies ist ein berühmtes Problem, aber leider wurde es nicht nur nicht gelöst, es wurde auch bewiesen, dass die Unsicherheit zwischen beiden unvermeidlich ist - die Gabor-Grenze, die Heisenberg-Gabor-Grenze, das Unsicherheitsprinzip usw.

Wenn ich Sie wäre, würde ich mit einer der vielen Standardbibliotheken beginnen, um die Gabor-Transformation zu berechnen, und mit dem Schneiden der Zeitreihen in verschiedene Längen experimentieren. Es besteht eine ziemlich gute Chance, dass Sie Glück haben und eine Länge haben, die eine angemessene Zeitlokalisierung und eine angemessene Frequenzdiskriminierung bietet .

Wenn dies für diese Anwendung nicht funktioniert, würde ich mich anderen Ansätzen zur Zeit-Frequenz-Darstellung und Zeit-Frequenz-Analyse zuwenden - Wavelet-Transformationen, Chirplet-Transformationen , fraktionierte Fourier-Transformation (FRFT) usw.

BEARBEITEN: Einige Quellcodes zum Generieren von Spektrogrammen / Wasserfalldiagrammen aus Audiodaten:

Bild zu Spektrogramm geht in umgekehrter Richtung von den oben genannten Dienstprogrammen.


Die Gabor-Transformation erfolgt nur mit Gaußschen Fenstern. Wenn Sie ein anderes Fenster verwenden, handelt es sich nur um eine STFT. (Und echte Gaußsche Fenster existieren in digital nicht, weil sie sich bis ins Unendliche verjüngen.)
Endolith

@endolith: Du hast recht. Die Gabor-Transformation verwendet eine "Gaußsche Fensterfunktion", die auf endliche Länge abgeschnitten ist - sie ist ziemlich nah, aber mathematisch nicht identisch mit einem idealen Gaußschen.
David Cary

Ich denke, die Gabor-Transformation ist eine kontinuierliche Transformation, die ein Integral verwendet, sodass sie einen nicht abgeschnittenen Gaußschen als Fenster haben kann.
Endolith

@endolith: Ja, im Prinzip könnte eine Person einen nicht abgeschnittenen Gaußschen als Fenster verwenden. In der Praxis macht die Verwendung eines abgeschnittenen Fensters im Ausgabediagramm praktisch immer keinen wahrnehmbaren Unterschied, da praktisch die gesamte Energie des Gaußschen innerhalb weniger Sigma vom zentralen Buckel liegt. Da Software, die Spektrogramm- Wasserfalldiagramme erstellt, wiederholt das Gaußsche Fenster anwendet und dann eine FFT für jede Spalte des Diagramms ausführt, würde "Nicht-Abschneiden" diese Software unerträglich langsam machen.
David Cary
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.