mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP FFT reller Wert: Ergebnis umrechen?


Autor: Tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

für eine Frequenzanalyse liefert mir ein AD-Wandler N Samples, die mit 
einer auf reale Eingangswerte optimierten FFT (fix_fft.c) ausgewertet 
werden.
Es werden dafür die Sampels mit geradem und ungeradem Index in 2 Puffern 
gespeichert und dann eine (N-1)-FFT durchgeführt. Die ungeraden Samples 
werden als imaginäre Werte und die geraden als reale Werte angesehen.
Die Ergebnisse scheinen richtig zu sein.

Was mir fehlt ist eine Umrechnungsfunktion, mit dem ich aus dem Ergebnis 
(N-Werte) die (N+1)-komplexen Zahlen für mein Spektrum bekomme.
Wer weiß wie man diese Umrechung nennt, kann sie hier posten oder hat 
einen Link? Bei den üblichen DSP-Seiten habe ich nichts dazu finden 
können.
Ich suche keinen fertigen Code, sondern die Formeln möglichst mit 
Erklärung.

Tex

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist doch eine ganz normale einseitige FFT? Einseitig wegen den 
reellen Eingangswerten, das negative Spektrum ist konjugiert komplex zum 
positiven Spektrum. Für das positive Spektrum kannst du die ganz normale 
FFT-Formel bzw. DFT-Formel nehmen.

Autor: Tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

>>Das ist doch eine ganz normale einseitige FFT?
Nein, es wir eine statt einer 2048er-FFT mit Imaginäreteil = 0 eine 
1024er-FFT durchgeführt, die als Imaginärteil die ungeraden Samples 
nimmt und 1024 komlexe Zahlen errechnet.
Das Ergebnis ist deshalb symetrisch zu dem 512ten Wert, statt zu dem 
1024zigsten Wert, wie es bei der 2048er-FFT ist.

>>Einseitig wegen den reellen Eingangswerten, das negative Spektrum ist 
>>konjugiert komplex zum positiven Spektrum.
Ja, aber das Spektrum muss konjugiert komplex zum 1024zigsten Wert sein 
und nicht zum 512ten.

>>Für das positive Spektrum kannst du die ganz normale
>>FFT-Formel bzw. DFT-Formel nehmen.
Ich nehme diese FFT, weil ich damit nur die Hälfte an Speicher brauche.
Für die normale FFT ist kein Platz im RAM.

Autor: SilentPro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

der Thread ist zwar schon wenige Monate alt, aber evtl. dürfte die 
Lösung interessant sein für alle, die noch auf diesen Thread stoßen 
werden!

Was "Tex" mit seiner Beschreibung wohl gemeint hat, ist die "real FFT",
also eine für reale Eingangsswerte optimierte Variante der FFT.
Obwohl Tex anscheinend "die üblichen DSP-Seiten" durchsucht hat, ist ihm 
wohl nicht aufgefallen, dass diese Technik auf www.dspguide.com (bzw. in 
dem Buch, dass dort einzusehen ist) klar und ausführlich beschrieben 
wird.

Der Link zu der entsprechenden Seite:
http://www.dspguide.com/ch12/5.htm

Der Ansatz, die geraden Eingangswerte im Realteil und die ungeraden in 
den Imaginäreil eines N/2 großen Arrays zu packen, ist dabei schonmal 
richtig. Da durch die FFT hieraus zwei überlagerte Teilspektren im Real- 
und Imaginärteil werden, müssen diese mit 2 Schritten zu einem Spektrum 
vereinigt werden.

1. "Even/odd frequency domain decomposition"
Die beiden überlagerten Teilspektren werden hierbei voneinander 
getrennt.

2. "Complete the last FFT stage
Wie in der normalen FFT selbst, wird hier aus den zwei N/2-Spektren ein 
N-Spektrum erzeugt; also nochmal die ganze Butterfly-Schleife 
durchlaufen.

Das alles sollte man wohl direkt in einer gemeinsamen Funktion vereinen.
In dem Beispielcode ganz unten auf der Link-Seite (s.o.) wird das etwas 
aufgeteilt, so dass man die ganz normale FFT-Funktion einsetzen kann.
Am Ende fehlt meines Erachtens nach aber noch die Skalierung des 
Spektrums mit 1/N! Dies merkt man aber wohlerst, wenn man die Werte 
absolut betrachten oder eine inverse FFT durchführen möchte!

Autor: Joe Joe (j_955)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich sitze im Moment ebenfalls an einer Aufgabe, die u.a. die FFT als 
Teilaufgabe beinhaltet. Zu dem Punkt für RFFT´s bin ich auch gekommen..@ 
Tex-könntest du vielleicht den einen oder anderen Link postn, der mich 
zu einer (einfacheren) Erklärung der RFFT führt?

Grüße und Danke

Autor: Tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, das kann ich leider nicht, ich habe meine Antworten in dem
Buch "FFT - Schnelle Fouriertransformation" von E. O. Brigham
gefunden. Bei einem komplexen Thema wie FFT schlägt ein gutes Buch jede
Internetseite.

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.