Ich habe einen Algorithmus, der eine Sequenz mit Null auf 4N auffüllt, eine FFT durchführt und nur die niedrigsten Frequenz-N-Punkte aus den generierten 4N verwendet.
Dies scheint eine Menge verschwendeter Arbeit zu sein. Gibt es Ideen, wie dies schneller erledigt werden kann?
Antworten:
Wenn Sie nur ein paar Fächer haben, kann das Folgende für Sie sehr effizient sein:
1. Machen Sie einfach die DFT für jede Frequenz, die Sie benötigen.
2. Verwenden Sie für jede Frequenz den Goertzel-Algorithmus.
quelle
Das Null-Auffüllen auf die 4-fache Länge, das Berechnen der längeren FFT und die anschließende Verwendung nur der unteren 1/4-Bins führen zu nahezu identischen Ergebnissen wie die fensterbasierte Sinc-Interpolation der FFT der ursprünglichen Länge.
Verwenden Sie einfach die ursprüngliche FFT-Länge und interpolieren Sie mit einem 3-Phasen-Sinc-Interpolationskern mit einer geeigneten Fensterbreite.
quelle
Das Auffüllen mit Nullen im Zeitbereich gibt Ihnen eine Lösung mit höherer Frequenz, aber keine neuen Informationen, sodass im Frequenzbereich im Wesentlichen interpoliert wird. Abhängig von der Art Ihrer Signale und der erforderlichen Genauigkeit können Sie möglicherweise die zusätzlichen Frequenzpunkte mit einer regulären FFT von N Punkten erhalten und eine geeignete Interpolation durchführen (linear, Spline, Chip, Sinc usw.).
quelle