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