www.mikrocontroller.net

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


Autor: Michael Eberhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael Eberhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael Eberhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael Eberhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.