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


von Ben j. (scarab)


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?)

von Johannes (Gast)


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.

von Andreas S. (andreas) (Admin) Benutzerseite


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.

von Johannes (Gast)


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.

von Andreas S. (andreas) (Admin) Benutzerseite


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.

von Johannes (Gast)


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.

von Andreas S. (andreas) (Admin) Benutzerseite


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_STFT_Filter_Banks.html.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.