Forum: Digitale Signalverarbeitung / DSP / Machine Learning Ergebnis einer komplexen N point IFFT in reelle M point Folge konvertieren


von Mike F. (Gast)


Lesenswert?

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

von lot (Gast)


Lesenswert?

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.

von Mike F. (Gast)


Lesenswert?

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

von lot (Gast)


Lesenswert?

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.

von Johannes E. (cpt_nemo)


Lesenswert?

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.

von lot (Gast)


Lesenswert?

@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.

von Frank M. (aktenasche)


Lesenswert?

wieso keine 128 punkte FFT?

von MAC-Einheint (Gast)


Lesenswert?

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

von Mike F. (Gast)


Lesenswert?

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

von Johannes E. (cpt_nemo)


Lesenswert?

Mike F. schrieb:
> ich weiß nicht was im Frequenzbereich passiert.

Wenn du das nicht weist, dann ist es irgendwie sinnlos, mit dem Ergebnis 
weiterzurechnen. Was ist denn die eigentliche Aufgabe, also was soll das 
System insgesamt machen?

von Mike F. (Gast)


Lesenswert?

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

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.