Punktweise FFT effektiv realisieren

Gast #3283811
Ich benötige eine FTT für sehr kurze Signale und leide an dem Problem, 
dass sie relativ fein aufgelöst sein muss. Die Schwierigkeit stellt sich 
nun so dar, dass bei einer angenommenen Zahl von 128 Stellen, zunächst 
nur alle 128 Punkte einen FFT mit 2x64 Frequenzen heraus kommt und das 
kurze Signal so ungünstig über die FFTs verteilt ist, dass es zwischen 
zwei FFTs hängt und zu stark gedämpft wird, weil es nur teilerfasst 
wird. FFT averagin scheidet aus, weil das Signal nicht periodisch ist 
und nur kurz auftritt.

Der erste Ansatz war, zwei FFTs zu überlappen, allerdings sieht es nun 
so aus, dass die Fensterung als Verzerrer wirkt. Ich arbeite mit einem 
engen Kaiserfenster und bekomme nur dann, wenn das Signal exakt mittig 
in der FFT oder exakt genau zwischen zweien (also im Zwischenraum) ist, 
zwei vergleichbare Spektren, anhand deren Verlauf ist Entscheidungen 
treffen kann.

Die Lösung ist nun (mit MATLAB verfiziert) für jede Punktgruppe eine FFT 
zu machen, als von

0...127
1...128
2...129
...
126 .. 253
127...254
128 ... 255
ab dann wieder weiter
129 ... 256

usw

Ich benötige also 128 parallele FFTs! Frage: Gibt es dafür einen 
optimierten Algorithmus? Oder muss ich de 128 sequenziell laufen lassen?
Gast
Sieht man sich die Formel für die N Punkte DFT


an, erkennt man, dass jeder Wert X[n] von jedem Eingangswert x[k] 
abhängt.

Nun schauen wir uns das Signal K Schritte später an.

Letzteres gilt allerdings nur, falls das Signal periodisch ist. Also 
müssen wir uns noch mehr Gedanken machen.

Der Einfachheit halber nehmen wir mal an, wir haben X[n] gegeben und 
kriegen nun einen neunen x-Wert. Das neue Signal nennen wir y[n] und es 
gilt y[k] = x[k+1] für 0≤n<N-1.
y[N-1] = der neue x-Wert.

Jetzt kann man sich das ganze schön überlegen:


Und da sehen wir schon etwas Grundsätzliches:

Daraus folgt, dass sich das neue Spektrum Y[n] aus dem alten X[n] ergibt 
aus:

So. Habe alles aus dem Kopf und spontan aufgeschrieben. Also ist die 
Wahrscheinlichkeit groß, dass sich irgendwo ein Fehler eingeschlichen 
hat (irgendwie vermisse ich noch eine Phasenverschiebung des alten 
Spektrums). Aber das Grundprinzip sieht so aus. Am Besten einfach noch 
mal nachrechnen.
Gast
Hab es gerade in Matlab getestet. So wie ich es ausgerechnet habe ist es 
definitiv falsch. Der Fehler liegt wahrscheinlich irgendwo darin, dass 
ich vergessen habe, dass bei der N-1 Punkte DFT in der 
Exponentialfunktion natürlich dann auch durch (N-1) geteilt werden muss 
und nicht durch N. Ich hoffe es hilft trotzdem weiter.
Gast
Moin,

den Ansatz von abcd unterschreib ich mal mit (modulo Normierung, so 
genau weiss ich das auch nie auswendig). Diesen 'sliding DFT'-Ansatz 
hätt ich jetzt auch mal als erstes rangenommen. Unter dem Stichwort 
sollte auch so einiges zu finden sein.
Trotzdem gibt es dann noch das Artefakt-Problem (bei fehlender 
Fensterung). Das muss man dann it einer sekundären Logik (Filterung) 
angehen, was die Sache wieder schrecklich kompliziert macht. Welche 
Fenster man da elegant innerhalb der Sliding DFT verwendet, wäre noch 
interessant.
Gast
Wenn man für das Fenster etwas einfaches, cosinusförmiges nähme, könnte 
man die so entstehenden Faktoren sicher irgendwie mit den Cos/Sin Werten 
verknüpfen, die aus der FFT kommen. Müsste man sich mal aufzeichnen...

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.