Forum: Digitale Signalverarbeitung / DSP / Machine Learning FFT Auflösung im Frequenzspektrum


von Michael Eberhardt (Gast)


Lesenswert?

Hallo,

ich habe allgemeine Fragen zur FFT:

Wie ist der Zusammenhang zwischen Anzahl der Stützstellen und
Frequenzauflösung zu verstehen? Ich taste mit 180 Hz ab. Die
Frequenzauflösung ist abhängig von der Anzahl der Stützstellen,
meinetwegen 256. Damit bekomme ich einen Wert von ca. 0,7. Bei 128
Stützstellen wäre die Auflösung ca. 1,4. Für die Darstellung wäre eine
Auflösung von genau 1 wünschenswert. Komme ich mit einer FFT, die ja 2
hoch n Stüzstellen benötigt, überhaupt dahin?

Bei der Abtastrate von 180 Hz sehe ich nach der FFT aufgrund der
Spiegelsymmetrie das Spektrum von 0 bis 90 Hz in der entsprechenden
Auflösung (abhängig von der Anzahl der Stützstellen). Für die Analyse
sind nur Frequenzanteile bis 50 Hz relevant und darzustellen. Dazu muss
ich quasi nur die Anteile oberhalb von 50 Hz "verwerfen"? Oder kann
ich die Überabtastung vorteilhaft nutzen?

Mfg

von Alex (Gast)


Lesenswert?

Auflösung = Abtastrate / Anzahl der Werte

Die Anzahl der Werte lässt sich durch zero-padding noch verändern (das
Abtasttheorem muss erfüllt bleiben!).

Eine gewisse Überabtastung brauchst du immer, da ich bezweifle, dass du
entsprechend steile Anti-Aliasing-Filter hast.

Ein Darstellungsproblem kannst du z.B. durch simple Interpolation
lösen, erfordert aber logischerweise noch etwas Rechenleistung.
Alternativ verzichtest du bei 180 Punkten auf die FFT und rechnest mit
einer DFT (dort ist die Anzahl der Werte nicht auf 2^n beschränkt),
sollte immer noch halbwegs zügig sein, abhängig von der verwendeten
Hardware.

Es gibt auch noch andere Algorithmen, die u.a. auf der Zerlegung in
Primfaktoren beruhen, dort kannst du dich dann aber selbst schlau
machen :)

Alex

von Michael Eberhardt (Gast)


Lesenswert?

Mein Signal wird vor der Abtastung gefiltert, daher ist eine gewisse
Überabtastung gewollt, wie von dir beschrieben.

Die Interpolation war ebenfalls meine einzige Idee. Die Rechenleistung
sollte kein Problem darstellen. De facto geschieht die Berechnung mit
dem PC in C#. Ist in jedem Fall die bessere Lösung als DFT.

Danke für die Antwort.

von Alex (Gast)


Lesenswert?

Auf dem PC wirst du, so denn kein "Movie" mit x Frames/s gewünscht ist
keinen unterschied zwischen FFT und DFT merken. Von daher kannst du dir
viel Arbeit ersparen - die Implementierung kriegt man gesamt auf eine
halbe Bildschirmseite.

Welche FFT-Routinen setzt du auf PC-Seite ein? Ich verwende die von
http://www.exocortex.org/dsp/.

Alex

von Michael Eberhardt (Gast)


Lesenswert?

Ich benutze ebenfalls die Exocortex.DSP Routinen. Allerdings enthalten
die nur FFTs.

Ich habe eine Software geschrieben, welche die Messsignale direkt
darstellt (eine Art Oszi also) und nebenher das Spektrum anzeigt
(ähnlich einem Equalizer bei der Stereoanlage). Außerdem werden die
einzelnen Frequenzbereiche getrennt dargestellt.

Ich habe noch ein Problem mit der Skalierung der y-Achse meiner
Spektrumdarstellung. Die Darstellung erfolgt nach der Berechnung der
Absolutwerte der Ergebnisse von Fourier.RFFT(). Dieses Werte muß ich
jedoch skalieren, damit sie in das Fenster passen. Im Moment habe ich
den Faktor durch ausprobieren ermittelt. Gibt es eine Möglichkeit im
Voraus die maximale "Höhe" des Absolutwerts zu ermitteln? Falls das
Signal nur eine einzige Frequenz enthält müßte der entsprechende
Absolutwert ja maximal sein. Hätte ich diesen Wert, könnte ich ihn als
100% ansehen und die Darstellung danach skalieren.

von Alex (Gast)


Lesenswert?

Ich beschreite den Trivialweg und durchsuche das Array nach dem
Berechnen der FFT nach dem Maximalwert und baue darauf meine Skalierung
auf - ist keine wesentliche Performance-Bremse.

von Michael Eberhardt (Gast)


Lesenswert?

Der Weg funktioniert leider nur, wenn ich eine begrenzte Menge an Werten
analysiere und dann darstelle. Ich will jedoch einen Dauerbetrieb
ermöglichen. D.h. ich rechne ständig neue FFTs über das Messsignal und
weiß vorher den Maximalwert einfach nicht.

von Dennis (Gast)


Lesenswert?

Hallo,

ich habe ein ähnliches Problem.
Habe das aber noch nicht ganz verstanden.
Ich messe eine Frequenz.
Taste diese Frequenz mit 19200Hz ab.
Meine Aufgabe besteht nun darin, die beste Auflösung bei optimaler 
Abtastfrequenz zu finden.
Ich weiß, dass die Auflösung bei hoher Abtastung besser wird.
Allerdings wäre das zu hoch.

Wie lautet denn der zusammenhang zwischen Auflösung und Abtastfrequenz?

Der Alex schrieb:
Auflösung = Abtastrate / Anzahl der Werte

Was ist denn nun die "Anzahl der Werte"?

Dennis

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.