Komplexität der DFT | Aufgaben und Übungen mit Lösungen

Komplexität der DFT Aufgaben PDF

Öffnen – Komplexität der DFT  – Aufgaben (PDF)

Komplexität der DFT

Die DFT ist ein sehr mächtiges Werkzeug in der digitalen Signalverarbeitung, aber sie hat einen großen Nachteil: Sie ist sehr computationally aufwändig. Die einfachste Form der DFT, die sogenannte „naive“ DFT, benötigt O(N^2) Operationen, um ein N-Punkte-DFT-Spektrum zu berechnen. Um ein einzelnes DFT-Spektrum zu berechnen, müssen wir also N^2 Multiplikationen und N^2 Additionen durchführen! Für ein einzelnes Audio-Signal mit einer Sampling-Rate von 44.1kHz und einer DFT-Größe von 4096 Punkten (was für ein hochauflösendes Spektrum notwendig ist) benötigen wir also 4.4 millionen Multiplikationen und Additionen. Das ist eine sehr große Zahl, und wenn wir versuchen, die DFT in Echtzeit (also während des Abspielens eines Signals) durchzuführen, werden wir schnell an die Grenzen unserer Computerkapazitäten stoßen.

Es gibt jedoch einige Tricks, mit denen die DFT-Computational Complexity reduziert werden kann. Die sogenannte Cooley-Tukey FFT ist ein sehr effizienter Algorithmus zur Berechnung der DFT, der die Computational Complexity auf O(N log N) reduziert. Das ist eine enorme Verbesserung gegenüber dem „naiven“ Algorithmus, und mit diesem Algorithmus können wir die DFT in Echtzeit berechnen. Es gibt jedoch noch weitere Möglichkeiten, die Computational Complexity der DFT zu reduzieren. Eine davon ist die sogenannte Reduktion der DFT-Größe. Dies ist eine Methode, bei der wir die DFT-Größe verringern, indem wir nur die ersten M Punkte berechnen, wobei M < N ist. Dies hat zur Folge, dass wir weniger Multiplikationen und Additionen durchführen müssen, um das DFT-Spektrum zu berechnen, was die Computational Complexity auf O(M log M) reduziert. Dies ist eine weitere große Verbesserung gegenüber dem „naiven“ Algorithmus, und mit dieser Methode können wir die DFT in Echtzeit berechnen, selbst wenn wir ein sehr hohes Sampling-Rate verwenden.

Ein weiterer Trick, um die Computational Complexity der DFT zu reduzieren, ist die sogenannte Overlapping-DFT. Dies ist eine Methode, bei der wir das DFT-Spektrum in kleinere Abschnitte unterteilen und jeden Abschnitt überlappen lassen. Dies hat zur Folge, dass wir weniger Multiplikationen und Additionen durchführen müssen, um das DFT-Spektrum zu berechnen, was die Computational Complexity auf O(N log N) reduziert. Dies ist eine weitere große Verbesserung gegenüber dem „naiven“ Algorithmus, und mit dieser Methode können wir die DFT in Echtzeit berechnen, selbst wenn wir ein sehr hohes Sampling-Rate verwenden.

Aufgabe 1:

Berechne die DFT des folgenden Signals mit N = 1024 Punkten:

Lösung:

Die DFT von x[n] ist gegeben durch:

Für N = 1024 erhalten wir:

Wir können die DFT auch mit dem FFT-Algorithmus berechnen, der eine Computational Complexity von O(N log N) hat. Die FFT von x[n] ist gegeben durch:

Für N = 1024 erhalten wir:

Aufgabe 2:

Berechne die DFT des folgenden Signals mit N = 4096 Punkten:

Lösung:

Die DFT von x[n] ist gegeben durch:

Für N = 4096 erhalten wir:

Wir können die DFT auch mit dem FFT-Algorithmus berechnen, der eine Computational Complexity von O(N log N) hat. Die FFT von x[n] ist gegeben durch:

Für N = 4096 erhalten wir:

Aufgabe 3:

Berechne die DFT des folgenden Signals mit N = 16384 Punkten:

Lösung:

Die DFT von x[n] ist gegeben durch:

Für N = 16384 erhalten wir:

Öffnen – Komplexität der DFT  – Aufgaben (PDF)

Komplexität der DFT Aufgaben PDF