Bluestein-FFT-Algorithmus

Der Bluestein-FFT-Algorithmus (1968), normalerweise als Chirp-z-Transformation bezeichnet (1969, englisch chirp, dt. »zirpen«), ist ein FFT-Algorithmus, der die Diskrete Fourier-Transformation (DFT) von Datenmengen beliebiger Größe durch die Umformulierung der DFT als eine Faltung berechnet. Dies ist deswegen interessant, da die normale schnelle Fourier-Transformation erfordert, dass die Anzahl der Daten eine Zweierpotenz ist. Ein anderer Algorithmus für FFTs von großen Datenmengen, der die DFT als Faltung formuliert, ist Raders Algorithmus.

Tatsächlich kann der Algorithmus von Leo Bluestein verwendet werden, um allgemeinere Transformationen als DFT durchzuführen, basierend auf der (unilateralen) z-Transformation.[1]

Algorithmus

Die DFT wird definiert durch die Formel

X k = n = 0 N 1 x n e 2 π i N n k = n = 0 N 1 x n e 2 n k π i N k = 0 , , N 1. {\displaystyle X_{k}=\sum _{n=0}^{N-1}x_{n}e^{-{\frac {2\pi i}{N}}nk}=\sum _{n=0}^{N-1}x_{n}e^{{\mathbf {-2nk} }{\frac {\pi i}{N}}}\qquad k=0,\dots ,N-1.}

Wird das Produkt 2 n k {\displaystyle \mathbf {-2nk} } im Exponenten durch 2 n k = k 2 + n 2 + ( k n ) 2 {\displaystyle \mathbf {-2nk} =\mathbf {-k^{2}} +\mathbf {-n^{2}} +\mathbf {(k-n)^{2}} } substituiert und e a + b = e a e b {\displaystyle e^{a+b}=e^{a}e^{b}} berücksichtigt, ergibt sich:

X k = e k 2 π i N n = 0 N 1 ( x n e n 2 π i N ) e + ( k n ) 2 π i N k = 0 , , N 1. {\displaystyle X_{k}=e^{\mathbf {-k^{2}} {\frac {\pi i}{N}}}\sum _{n=0}^{N-1}\left(x_{n}e^{\mathbf {-n^{2}} {\frac {\pi i}{N}}}\right)e^{\mathbf {+(k-n)^{2}} {\frac {\pi i}{N}}}\qquad k=0,\dots ,N-1.}

Diese Summation ist genau genommen eine Faltung der beiden Folgen a n {\displaystyle a_{n}} und b n {\displaystyle b_{n}} mit Länge N {\displaystyle N} ( n = 0 , , N 1 ) {\displaystyle (n=0,\ldots ,N-1)} definiert durch:

a n = x n e n 2 π i N {\displaystyle a_{n}=x_{n}e^{-n^{2}{\frac {\pi i}{N}}}}
b k n = e + ( k n ) 2 π i N , {\displaystyle b_{k-n}=e^{+(k-n)^{2}{\frac {\pi i}{N}}},}

mit dem Ergebnis der Faltung multipliziert mit N {\displaystyle N} Phasenfaktoren b k {\displaystyle b_{k}^{*}} . Das ergibt:

X k = b k n = 0 N 1 a n b k n k = 0 , , N 1. {\displaystyle X_{k}=b_{k}^{*}\sum _{n=0}^{N-1}a_{n}b_{k-n}\qquad k=0,\dots ,N-1.}

Diese Faltung kann wiederum durchgeführt werden mit einem Paar von FFTs (und der vorausberechneten FFT von b n {\displaystyle b_{n}} ) mithilfe des Faltungstheorems. Schlüsselpunkt ist, dass diese FFTs nicht von der gleichen Länge N {\displaystyle N} sind: solch eine Faltung kann von FFTs exakt nur berechnet werden durch Auffüllen mit Nullen zu einer Länge größer als oder gleich 2 N 1 {\displaystyle 2N-1} . Insbesondere kann man zu einer Zweierpotenz oder einer anderen zusammengesetzten Zahl auffüllen, für die die FFT effizient durchgeführt werden kann durch z. B. den Cooley-Tukey-FFT-Algorithmus mit Ordnung O ( N log N ) {\displaystyle O(N\log N)} bezüglich der Rechenzeit. Auf diese Weise bietet Bluesteins Algorithmus einen Weg der Ordnung O ( N log N ) {\displaystyle O(N\log N)} zur Berechnung von DFTs mit Primzahl-Größe, auch wenn er um einige Faktoren langsamer ist als der Cooley-Tukey-Algorithmus für zusammengesetzte Zahlen.

Das Auffüllen mit Nullen für die Faltung in Bluesteins Algorithmus benötigt eine zusätzliche Erläuterung. Angenommen, wir füllen Nullen auf bis zu einer Länge M 2 N 1 {\displaystyle M\geq 2N-1} . Das bedeutet, dass a n {\displaystyle a_{n}} erweitert wird auf ein Feld A n {\displaystyle A_{n}} der Länge M {\displaystyle M} , wobei andernfalls A n = a n {\displaystyle A_{n}=a_{n}} für 0 n < N {\displaystyle 0\leq n<N} und A n = 0 {\displaystyle A_{n}=0} ist – die ursprüngliche Bedeutung von „zero-padding“ (Auffüllen mit Nullen).

Dennoch werden wegen des Terms b k n {\displaystyle b_{k-n}} in der Faltung sowohl positive als auch negative Werte von n {\displaystyle n} benötigt für b n {\displaystyle b_{n}} (beachte, dass b n = b n {\displaystyle b_{-n}=b_{n}} ). Die periodischen Randbedingungen, die durch die DFT des mit Nullen aufgefüllten Feldes impliziert werden, bedeuten, dass n {\displaystyle -n} äquivalent ist zu M n {\displaystyle M-n} . Folglich wird b n {\displaystyle b_{n}} erweitert zu einem Feld B n {\displaystyle B_{n}} der Länge M {\displaystyle M} , wobei B 0 = b 0 {\displaystyle B_{0}=b_{0}} , B n = B M n = b n {\displaystyle B_{n}=B_{M-n}=b_{n}} für 1 n < N {\displaystyle 1\leq n<N} , und B n = 0 {\displaystyle B_{n}=0} sonst.

Betrachten wir also etwas genauer, welcher Typ von Faltung in Bluesteins Algorithmus für die DFT benötigt wird. Wäre die Folge b n {\displaystyle b_{n}} periodisch in n {\displaystyle n} mit Periode N {\displaystyle N} , dann wäre es eine zyklische Faltung der Länge N {\displaystyle N} , und das Auffüllen mit Nullen diente nur der rechnerischen Bequemlichkeit. Allerdings ist dies nicht generell der Fall:

b n + N = e π i N ( n + N ) 2 = b n e π i N ( 2 N n + N 2 ) = ( 1 ) N b n . {\displaystyle b_{n+N}=e^{{\frac {\pi i}{N}}(n+N)^{2}}=b_{n}e^{{\frac {\pi i}{N}}(2Nn+N^{2})}=(-1)^{N}b_{n}.}

Folglich ist für N {\displaystyle N} gerade die Faltung zyklisch, aber in diesem Falle ist N {\displaystyle N} eine zusammengesetzte Zahl und normalerweise würde man einen effizienteren FFT Algorithmus wie z. B. den nach Cooley-Tukey wählen. Jedoch ist für ungerade N {\displaystyle N} das b n {\displaystyle b_{n}} eine antiperiodische Funktion, und technisch gesehen haben wir eine negazyklische Faltung (engl. negacyclic convolution) der Länge N {\displaystyle N} . Solche Unterscheidungen verschwinden, wenn man a n {\displaystyle a_{n}} zu einer Länge von 2 N 1 {\displaystyle 2N-1} auffüllt, wie oben beschrieben.

z-Transformationen

Bluesteins Algorithmus kann auch benutzt werden, um eine generellere Transformation zu berechnen, die auf der (einseitigen) z-Transformation basiert.[1] Insbesondere kann es jede Transformation berechnen von der Form:

X k = n = 0 N 1 x n z n k k = 0 , , M 1 , {\displaystyle X_{k}=\sum _{n=0}^{N-1}x_{n}z^{nk}\qquad k=0,\dots ,M-1,}

für eine beliebige komplexe Zahl z {\displaystyle z} und für unterschiedliche Zahlen N {\displaystyle N} und M {\displaystyle M} von Eingaben und Ausgaben. Angesichts Bluesteins Algorithmus kann eine solche Transformation zum Beispiel benutzt werden, um eine feinere Interpolation zu erhalten von einem Teil des Spektrums (obgleich die Frequenzauflösung immer noch begrenzt wird durch die totale Messzeit). Auch kann man beliebige Pole bei der Analyse von Übertragungsfunktionen herausarbeiten usw.

Der Algorithmus wird als Chirp-z-Transformationsalgorithmus bezeichnet, weil im Falle der Fourier-Transformation mit z = 1 {\displaystyle \left\|z\right\|=1} die Folge b n {\displaystyle b_{n}} von oben eine komplexe Sinuskurve mit linear anwachsender Frequenz ist, die in Radar-Systemen als (linearer) Chirp bezeichnet wird.

Literatur

  • Leo I. Bluestein: A linear filtering approach to the computation of the discrete Fourier transform. In: Northeast Electronics Research and Engineering Meeting Record 10, 1968, S. 218–219.
  • Lawrence R. Rabiner, Ronald W. Schafer, Charles M. Rader: The chirp z-transform Algorithmus and its applicatio. In: Bell Syst. Tech. J. 48, 1969, S. 1249–1292. Ebenfalls veröffentlicht in: Lawrence R. Rabiner, Ronald W. Schafer, Charles M. Rader: The chirp z-transform Algorithmus. In: IEEE Trans. Audio Electroacoustics. 17, Nr. 2, 1969, S. 86–92.
  • D. H. Bailey, P. N. Swarztrauber: The fractional Fourier transform and applications. In: SIAM Review. 33, 1991, S. 389–404 (Beachte, dass diese Terminologie für die z-Transformation nicht standardgemäß ist: eine fraktionale Fourier-Transformation[2] bezieht sich üblicherweise auf eine völlig andere kontinuierliche Transformation.).
  • Lawrence Rabiner: The chirp z-transform Algorithmus—a lesson in serendipity. In: IEEE Signal Processing Magazine. 24, 2004, S. 118–119 (Historisch geprägter Kommentar).

Einzelnachweise

  1. a b Lawrence R. Rabiner, Ronald W. Schafer, Charles M. Rader: The chirp z-transform Algorithmus and its application. In: Bell Syst. Tech. J. 48, 1969, S. 1249–1292. Ebenfalls veröffentlicht in: Lawrence R. Rabiner, Ronald W. Schafer, Charles M. Rader: The chirp z-transform Algorithmus. In: IEEE Trans. Audio Electroacoustics. 17, Nr. 2, 1969, S. 86–92.
  2. siehe „fractional Fourier transform“ in der englischen Wikipedia