Ergebnis einer komplexen N point IFFT in reelle M point Folge konvertieren

Gast #3006093
Hallo,

ich verwende ein typisches System der digitalen Signalverarbeitung: 
ADC-DSP-DAC. Mein DSP empfängt von einem ADC Abtastwerte. Wurden 128 
Abtastwerte "gesammelt", fängt der DSP an diesen Block zu verarbeiten. 
Verarbeiten heißt konkret es wird das Spektrum mittels komplexer FFT 
ermittelt, irgend eine Berechnung im Frequenzbereich durchgeführt und 
anschließend mittels komplexer IFFT in den Zeitbereich zurück 
konvertiert.

Die Fenstergröße der FFT und IFFT beträgt 2048. Um die 128 reellen 
Abtastwerte in eine komplexe Folge der Länge 2048 zu konvertieren, wird 
ein Zero-Padding ausgeführt (für alle Imaginärteile und Realteile >128).

Nun wird die komplexe FFT ausgeführt und die Berechnung im 
Frequenzbereich durchführt. Anschließend wird die komplexe IFFT 
berechnet. Nach der IFFT erhalte ich 2048 komplexe Abtastwerte.

Meine Frage: Wie berechne ich mir die für den DAC geforderte 
Ausgangsfolge von 128 reellen Abtastwerten aus den 2048 komplexen 
Abtastwerten? Wie "packe" ich die 2048 in 128 Abtastwerte?

Könnt ihr mir weiterhelfen? Benötigt ihr weitere Informationen?

Gruß
Mike
Gast
Die gesuchten 128 Werte sind natürlich die ersten 128 Werte deiner IFFT 
(Ausgangsfolge), weil genau diese mit den ersten 128 Werten deiner 
Eingangsfolge korrespondieren. Schaue dir am besten mal an wie Zeit- und 
Frequenzachse bei einer diskreten Fouriertransformation, bzw. ihrer 
inversen, mit einander verknüpft sind, dann siehst du das sofort.
Gast
Den Rest kann ich somit einfach verwerfen? Gehen mir da keine 
Informationen verloren? Ich werde mir die Theorie der IFFT nochmals 
genau ansehen, aber das war mir bisher nicht auf Anhieb ersichtlich.

Grüße
Mike
Gast
Jup, das sind ja alles Informationen die du dir bei der FFT durch 
zero-padding "dazu geschwindelt" hast. Das macht man normalerweise um 
Leck-Effekte zu vermeiden, bzw. weil man keine passende Hardware hat, 
weil rein theoretisch könntest du ja auch einen FFT-Baustein verwenden 
der nur 128 Punkte verwendet, aber solange du im Frequenzbereich dann 
auch alles richtig rechnest, ist das egal.
Auf alle Fälle hast du dann im Frequenzbereich, durch zero-padding im 
Zeitbereich, niedrige Frequenzen erzeugt die in deinem ursprünglichen 
Signal gar nicht vorhanden sind. Und aus diesen kleinen Frequenzen 
werden dann die (2048-128) Werte der Ausgangsfolge berechnet, welche du 
getrost wegwerfen kannst.
lot schrieb:
> Die gesuchten 128 Werte sind natürlich die ersten 128 Werte deiner IFFT
> (Ausgangsfolge), weil genau diese mit den ersten 128 Werten deiner
> Eingangsfolge korrespondieren.

So einfach sollte man es sich nicht machen, wenn man nicht weis, was 
genau im Frequenzbereich mit dem Signal gemacht wird bzw. was das System 
eigentlich machen soll.

Man kann z.B. das Spektrum im Frequenzbereich so bearbeiten, dass das 
Signal um eine bestimmte Zeit verzögert wird. Bei der Rücktransformation 
erscheint das Signal dann an einer anderen Stelle und in den ersten 128 
Samples ist nur noch Rauschen. In diesem Fall darf man nicht einfach die 
ersten 128 aus dem Datenstorm rauspicken, sondern muss die Daten von 
einer anderen Position verwenden.

Diese Frage kann man also nur dann beantworten, wenn uns Mike F. sagt, 
was genau er eigentlich machen möchte, also was im Ergebnis rauskommen 
soll.
Gast
@Johannes E.: Ich bin eben davon ausgegangen das wenn er den 
Verschiebungssatz anzuwenden weiß, er auch weiß an welcher Stelle dann 
welcher Wert steht.

@Mike F.: Aber ja, vielleicht solltest du doch nochmal schildern was du 
im Frequenzbereich machst.
Gast
> Jup, das sind ja alles Informationen die du dir bei der FFT durch
> zero-padding "dazu geschwindelt" hast. Das macht man normalerweise um
> Leck-Effekte zu vermeiden

Zero-Padding vermeidet keine Leck-Effekte. Die Leck-Effekte sind exakt 
gleich. Zero-Padding erhöht die Frequenzauflösung. Bei den Leck-Effekten 
siehst Du dann eben die einzelnen Lobes viel schöner.
Gast
Hi,

ich weiß nicht was im Frequenzbereich passiert. Ich bekomme in dieser 
Aufgabe lediglich 2048 komplexe Fourier-Koeffizienten und muss mit 
diesen rechnen. Deshalb kann ich auch nicht auf eine FFT-Größe von 128 
"runtersatteln", weil die FFT-Größe durch die Anzahl der Koeffizienten 
vorgegeben ist.

Ich bin mittlerweile auf die Overlap-Add-Methode gestoßen und bin bisher 
der Meinung, dass das der richtige Ansatz für mich ist.

Grüße
Mike
Gast
Es geht um digitale Audioverarbeitung. Die Fourier-Koeffizienten und 
deren Anzahl sind vorgegeben. Ich weiß jedoch nicht was die 
Koeffizienten bewirken.ich weiß nur was eine komplexe Multiplikation 
ist. Die führe ich nämlich aus, mit abtastwert und Koeffizient.

Gruß
Mike

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.