mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP DFT, STFT: Zeitauflösung?


Autor: Ben jamin (scarab)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich weiß nicht genau ob ich die Unterschiede zwischen DFT, FFT und STFT 
richtig verstanden habe deswegen mal die Frage:

Sowohl DFT als auch FFT liefern an sich keine Zeitauflösung sondern nur 
ein Spektrum der alle benutzten Samples beschreibt, Zeitauflösung 
bekommt man nur wenn man ein Signal in Blöcke von z.b. 512 Samples 
aufteilt und dann die jeweiligen Blöcke transformiert?

Also liefert eine DFT oder FFT mit 512 Samples quasi das gleiche 
Ergebnis wie eine STFT mit einem 512 Sample langem Rechteck-Fenster?


Rein theoretisch:
Wenn man also aus einem Signal mit z.b. 10k samples eine Transformation 
mit 10k Spektren haben möchte muss man egal ob DFT, FFT oder STFT auch 
10k Transformationen durchführen?

Gibt es einen Algorithmus der ein Spektrum liefert das im Zeitbereich 
genau so diskretisiert ist wie das Eingangssignal, also nicht wie bei 
einem 512er FFT wo die Zeitauflösung des Spektrums = ein 512tel der 
Abtastfrequenz ist?
(Ja ich weiß das ist extrem rechenaufwendig) Oder würde man sowas mit 
überlappenden STFT machen? (bei Simulink z.b. kann man ja STFT mit 
Überlappungen berechnen lassen so das auch für jeden Sample ein Spektrum 
berechnet wird aber geht das nicht effizienter?)

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Gibt es einen Algorithmus der ein Spektrum liefert das im Zeitbereich
> genau so diskretisiert ist wie das Eingangssignal, also nicht wie bei
> einem 512er FFT wo die Zeitauflösung des Spektrums = ein 512tel der
> Abtastfrequenz ist?

Such mal nach DFFT (Damn-Fast Fourier Transform), vermutlich ist es das 
was du suchst.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benjamin F. schrieb:
> Wenn man also aus einem Signal mit z.b. 10k samples eine Transformation
> mit 10k Spektren haben möchte

Wozu? Die einzelnen Frequenzbänder sind dann extrem überabgetastet und 
enthalten keine zusätzliche Information.

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wozu? Die einzelnen Frequenzbänder sind dann extrem überabgetastet und
> enthalten keine zusätzliche Information.

Er meint vermutlich, dass mit jedem neuen Sample das Spektrum neu 
berechnet wird. So etwas kann man z.B. dazu verwenden, wenn man ein 
Signal online filtern möchte.

Dazu wird das Signal abgetastet und kontinuierlich, also mit jedem neuen 
Sample, ein Spektrum berechnet. Das Spektrum wird dann irgendwie 
bearbeitet (z.B. bestimmte Frequenzen dämpfen oder verstärken) und dann 
wieder in den Zeitbereich zurücktransformiert. Damit das funktioniert, 
muss für jedem neuen Abtastwert das komplette Spektrum berechnet werden.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johannes schrieb:
> Er meint vermutlich, dass mit jedem neuen Sample das Spektrum neu
> berechnet wird. So etwas kann man z.B. dazu verwenden, wenn man ein
> Signal online filtern möchte.

Da berechnet man aber nicht für jeden Abtastwert ein neues Spektrum. Die 
Überlappung der Fenster beträgt meistens in der Größenordnung von 50%. 
Das ganze nennt sich Filterbank, mit dem Stichwort kann man beliebig 
viel Literatur finden.

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Da berechnet man aber nicht für jeden Abtastwert ein neues Spektrum.

Ja, deshalb hab ich auch die "DFFT" empfohlen. Da wird nur die Änderung, 
die durch das neue Sample entsteht, in das Spektrum reingerechnet, so 
dass der Rechenaufwand einigermaßen gering bleibt.

Eine Filterbank ist dann sinnvoll, wenn man nur relativ wenige 
Frequenzen bearbeiten möchte. Für komplexere Übertragunsfunktionen 
bräuchte man bei einer Filterbank sehr viele und sehr schmale Filter, 
was auch viel Rechenaufwand bedeutet. Da ist es dann evtl. günstiger, 
über den Umweg Fourier-Spektrum und zurück zu gehen.

Die Rücktransformation ist sowieso kein Problem, weil man hier nicht den 
komletten Zeitbereich berechnen muss, sondern nur ein einziges Sample.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johannes schrieb:
> Für komplexere Übertragunsfunktionen
> bräuchte man bei einer Filterbank sehr viele und sehr schmale Filter,
> was auch viel Rechenaufwand bedeutet. Da ist es dann evtl. günstiger,
> über den Umweg Fourier-Spektrum und zurück zu gehen.

Eine (gleichförmig) Filterbank implementiert man eigentlich immer mit 
einer DFT. Aber da berechnet man trotzdem nicht für jedes Sample im 
Zeitbereich ein komplettes Spektrum, sondern verwendet stark 
überlappende Fenster (DFT-Filterbank mit Unterabtastung). Wie gesagt, 
Literatur gibt es dazu sehr viel, z.B. 
https://ccrma.stanford.edu/~jos/sasp/Downsampled_S....

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.