ZHW, DSV, 27/4, Rur&Hrt 3- ZHW, DSV, 27/4, Rur&Hrt 3-2 3.. Einleitung Das Fourierspektrum X(f) eines abgetasteten Signals x[n] = x(nt s ) ist periodisch und kann auch in Funktion der Abtastwerte x[n] ausgedrückt werden (siehe Kapitel 2) X j n2π f Ts ( f ) = x[ n] e n=. (3.) Kapitel 3 DFT und FFT In diesem Kapitel wird zuerst gezeigt, dass die diskrete Fouriertransformation (DFT) eine äherung des Fourierspektrums X(f) in Gleichung (3.) darstellt. Danach werden die Eigenschaften der DFT analysiert und die Verwandtschaft mit der komplexen Fourierreihe aufgezeigt. Ausgehend von der DFT wird dann die Fast Fourier Transformation (FFT) vorgestellt. Die FFT ist einer der wichtigsten Algorithmen der DSV. Inhaltsverzeichnis 3.. EILEITUG... 2 3.2. DISKRETE FOURIERTRASFORMATIO (DFT)... 2 3.3. EIGESCHAFTE DER DFT... 3 3.4. VERWADTSCHAFT DER DFT MIT DER FOURIERREIHE... 5 3.5. FILTERFUKTIO DER DFT (FAKULTATIV)... 6 3.6. LEAKAGE UD WIDOWIG (FAKULTATIV)... 7 3.7. SCHELLE FOURIERTRASFORMATIO (FFT)... 3.8. FFT VO REELLWERTIGE SIGALE... 3.9. ECHTZEIT-SIGALVERARBEITUG MIT DER FFT (FAKULTATIV)... 4 3.2. Diskrete Fouriertransformation (DFT) Ein Problem bei der praktischen Bestimmung des Fourierspektrums in (3.) ist das Aufsummieren über unendlich viele Terme. Bei der DFT berücksichtigt man nur noch die Abtastwerte x[],..., x[-] in einem Zeitfenster bzw. window der Länge T DFT =T s, d.h. - jn2 f Ts. (3.2) n= X(f ) x[n] e π bezeichnet man als Blocklänge. Die äherung in (3.2) ist natürlich umso besser, je kleiner die vernachlässigten Abtastwerte sind. Aus Abtastwerten können maximal Frequenzwerte bestimmt werden. Bei der DFT bestimmt man deshalb nur die äquidistanten Abtastwerte m f s /, m=,..., -, des Fourier- Spektrums X(f) im Intervall [,f s ]. Wenn man in Gleichung (3.2) die kontinuierliche Variable f durch die diskrete Variable m f s /, m=,..., -, ersetzt, erhält man die DFT - n= 2π j mn X[m] = x[n] e m =,,..., (3.3) Literatur- bzw. Quellenverzeichnis [] M. Meier Signalverarbeitung, ISB 3-528-6955-9, Vieweg Verlag, Oktober 2. [2] A.V. Oppenheim, R.W. Schafer, J. R. Buck Zeitdiskrete Signalverarbeitung, 2., überarbeitete Auflage, ISB 3-8273-777-9, Pearson Studium, 24. Man kann zeigen, dass der folgende Ausdruck die inverse DFT bzw. die IDFT darstellt - 2π j mn x[n] = X[m] e n =,,..., (3.4) m= [3] W.H. Press, S.A. Teukolsky, W.T. Vetterling, B.P. Flannery, umerical Recipes in C, ISB -52-438-5, Cambridge University Press 992. Download (einzelne Kapitel als PDF, kostenlos) http//www.library.cornell.edu/nr/bookcpdf.html
ZHW, DSV, 27/4, Rur&Hrt 3-3 ZHW, DSV, 27/4, Rur&Hrt 3-4 3.3. Eigenschaften der DFT Aus Abtastwerten x[n] in einem Zeitfenster der Länge T DFT = T s berechnet die DFT komplexe Spektralwerte im Frequenzbereich... fs (-)/. Die Frequenzauflösung ist umgekehrt proportional zur Länge des Zeitfensters T DFT = T s Δf = f s / = / ( T s ) = /T DFT, (3.5) Wenn man die Gleichungen (3.) und (3.3) vergleicht sieht man, dass das DFT-Spektrum mit dem Fourier-Spektrum übereinstimmt bei den äquidistanten Spektralwerten f[m] = m f s /, m< welche berechnet wurden aus der Zeitfenster-Sequenz x [n]={x[],..., x[-]} (3.6) Das DFT-Spektrum in der. yquistzone [,f s /2] stimmt gut mit dem Amplitudengang des analogen RC-Tiefpass-Filters. Ordnung überein, weil beim Abtasten nur wenig Aliasing entsteht. Das DFT-Spektrum in Gleichung (3.3) ist diskret und periodisch. Ein periodisches Spektrum hat zur Folge, dass das Zeitsignal diskret, d.h. abgetastet, ist. Weiter hat ein diskretes Spektrum zur Folge, dass das Zeitsignal periodisch ist! Mit der DFT bestimmt man also das Spektrum der periodisch fortgesetzten Zeitfenster-Sequenz, d.h. x p [n] =..., {x [n+]}, {x [n]}, {x [n-]}, {x [n-2]},... X[n]/ (3.7) wobei n=,..., - und die Zeitfenster-Sequenz x (n) in Gleichung (3.6) gegeben ist und aus Abtastwerten einer Periode besteht. In Abbildung 3.2 ist ein Beispiel einer periodisch fortgesetzten Zeitfenster-Sequenz x p [n] dargestellt. Beispiel In Abbildung 3. ist die Zeitfenster-Sequenz x[n] dargestellt, die man erhält, wenn man die Stossantwort eines analogen RC-Tiefpass-Filters. Ordnung mit der Zeitkonstante t =RC=s mit der Abtastfrequenz f s = Hz im Zeitfenster...T DFT =T s =32s abtastet. Ebenfalls in Abbildung 3. ist das normierte 32-Punkt DFT-Betragsspektrum mit der Frequenzauflösung Δf=/T DFT =/32 Hz im Frequenzbereich [,f s ] dargestellt. (Mit reellen Werten x[n] ist die zweite Hälfte des DFT-Spektrums konjugiert komplex symmetrisch.) δ(t) x a (t) f s = Hz R C Zeitbereich RC = s x[],..., x[3] =32 Punkt DFT Abbildung 3.2 Periodisch fortgesetzte Zeitfenster-Sequenz x p [n], =32. Die Definition der DFT in Gleichung (3.3) hat den achteil, dass die Spektralwerte mit zunehmendem immer grösser werden. Diesen Sachverhalt erkennt man am einfachsten, wenn man die DC-Komponente X[] für die DC-Folge x [n]=,...,, n <, betrachtet. Es bleibt dem Anwender überlassen, die entsprechende ormierung vorzunehmen. ormalerweise teilt man die Spektralwerte X[m] durch, siehe Gleichung (3.7). x a (t)=(/t ) e -t/to t =RC=s Die wichtigsten Eigenschaften der DFT T s = s Frequenzbereich T DFT = 32 s Zeitbereich Entsprechung Frequenzbereich (reelle) Abtastwerte x[n] komplexe Spektralwerte Zeit-Abstand der Abtastwerte Ts = /fs Spektrum wiederholt sich nach fs /Ts = fs (=> Spiegelspektren) Zeitfenster (= Messdauer) T DFT = Ts Frequenzauflösung Δf = /( Ts) = fs/ = / T DFT IX a (f)i = I/(+j2πf t )I Δf = /T DFT = /32 Hz f s = Hz Abbildung 3. ormiertes 32-Punkt-DFT-Betragsspektrum.
ZHW, DSV, 27/4, Rur&Hrt 3-5 ZHW, DSV, 27/4, Rur&Hrt 3-6 3.4. Verwandtschaft der DFT mit der Fourierreihe Jede periodische Funktion x p (t) = x p (t-nt) kann als Fourierreihe dargestellt werden. Die komplexen Fourierkoeffizienten c n stellen dabei die Spektrallinien bei den Vielfachen der Grundfrequenz /T dar. Tastet man die periodische Funktion x p (t) mit Werten pro Periode T ab, d.h. T s =T/ bzw. f s =/T, so erhält man das diskrete Signal x p [n], dessen Spektrum aus dem Originalspektrum c n und Kopien bei Vielfachen der Abtastfrequenz f s besteht. Wenn beim Abtasten kein Aliasing entsteht, können die Spektrallinien c n gemäss Gleichung (3.7) mit der DFT berechnet werden, d.h. c n = X[n]/, n=,...,/2. (3.8) Beispiel Abbildung 3.3 stellt =8 Abtastwerte x[n] einer Periode T des cos-signals x(t) = cos(2πf t), f = /T, und das zugehörige, normierte DFT-Spektrum X[n]/ dar. Das periodische Signal x(t) kann mit Hilfe der Eulerformel wie folgt als (komplexe) Fourierreihe dargestellt werden x(t) =.5 e 2πfot +.5 e -2πfot. Alle Fourierkoeffizienten c n sind ull, ausser c =c - =.5. 3.5. Filterfunktion der DFT (fakultativ) Die Berechnung der einzelnen DFT-Werte X[m] in Gleichung (3.3) entspricht einer Filterung. In Abbildung 3.4 ist der normierte Betrag IX(5)I/ einer 4-Punkt-DFT eines mit f s =8 khz abgetasteten Cosinus-Signals x[n]=cos(2πf nt s ), n=,..., 39, dargestellt, wenn f variiert wird. Die Frequenzauflösung Δf=f s /=8/4 Hz=2 Hz. Der DFT-Wert X(5) entspricht der Spektralkomponente bei 5 Δf = khz. Für ein Cosinus-Signal der Frequenz f = Hz resultiert wie erwartet IX(5)I/ =.5. Solange die Frequenz f des Cosinus-Signals innerhalb des f=2 Hz breiten Behälters (engl. bin) um f liegt, gilt IX(5)I/.5. Liegt die Frequenz f des Cosinus-Signals aber ausserhalb des f=2 Hz breiten Behälters um f, spricht die khz Spektralkomponente kaum mehr an, d.h. IX(5)I/ <<.5. Bei den (anderen) Vielfachen der Frequenzauflösung f gilt sogar IX(5)I/=. Dort sprechen die anderen DFT-Spektralfilter an. x(t) = cos(2πf t) f s =8 khz x[n] =4 Punkt DFT X[5]/ Aus Abbildung 3.3 ist ersichtlich, dass die normierten 8-Punkt DFT-Werte mit den Fourierkoeffizienten c n, n = -3,...,3, übereinstimmen. Zeitbereich = 8 Abtastwerte x[n] einer Periode eines cos-signals Zeit / T Frequenzbereich = 8 Spektralwerte X[n]/ im Bereich [,f s = f ] c[] c[-] Abbildung 3.4 Filterfunktion der DFT. c[] c[2] c[3] c[-3] c[-2] Frequenz / f f f s =8f Abbildung 3.3 Verwandtschaft normierte DFT mit komplexer Fourierreihe.
ZHW, DSV, 27/4, Rur&Hrt 3-7 ZHW, DSV, 27/4, Rur&Hrt 3-8 3.6. Leakage und Windowing (fakultativ) Mit der DFT wird das Spektrum der periodisch fortgesetzten Zeitfenster-Sequenz x p [n] berechnet, siehe Gleichung (3.7). Wenn man die Fensterlänge unpassend wählt, kann es auf Grund der periodischen Fortsetzung zu Sprungstellen kommen, die im ursprünglichen Signal nicht enthalten waren. Das resultierende Spektrum weist dann zusätzliche, auslaufende Spektrallinien auf. Dieser Effekt wird leakage (Auslaufen) genannt. Der leakage-effekt kann vermindert werden, wenn die Zeitfenster-Sequenz x [n] mit einem auslaufenden Fenster (Window) gewichtet wird. Dieses sogenannte Windowing werden wir beim Digitalfilterentwurf noch genauer kennen lernen. Beispiel In Abbildung 3.5 oben ist das Zeitfenster so gewählt worden, dass genau 5 Perioden eines 5 Hz-Sinus darin Platz haben. Bei der periodischen Fortsetzung entstehen keine Sprungstellen. Das Betragsspektrum weist nur Frequenzkomponente auf, nämlich bei 5 Hz. In Abbildung 3.5 Mitte ist das Zeitfenster so gewählt worden, dass 4.75 Perioden eines 5 Hz-Sinus darin Platz haben. Bei der periodischen Fortsetzung entstehen Sprungstellen. Das Betragsspektrum weist neben der Frequenzkomponente bei 5 Hz noch weitere, auslaufende Frequenzkomponenten in der ähe von 5 Hz auf (Leakage). In Abbildung 3.5 unten ist das Zeitfenster wieder so gewählt worden, dass 4.75 Perioden eines 5 Hz-Sinus darin Platz haben. Die Zeitfenster-Sequenz x [n] ist in diesem Fall aber mit einem Hanning-Fenster der Länge gewichtet worden. Im Betragsspektrum ist der Leakage-Effekt immer noch erkennbar, aber deutlich kleiner als in der Mitte rechts. Die folgenden Abbildungen zeigen vier typische Fensterfunktionen (Windows), das gewichtete Zeitsignal (gemessenes Zeitsignal Fensterfunktion) und das resultierende Frequenzspektrum. Rechteck-Fenster = ohne Gewichtung Zeitsignal.5 5 - -.5.5 Hamming-Fenster gewichtetes Zeitsignal.5 5 - -.5.5 Kaiser-Fenster mit Beta = 2 gewichtetes Zeitsignal.5 5 - -.5.5 Kaiser-Fenster mit Beta = 7 gewichtetes Zeitsignal.5 5 - -.5.5 5 5 5 5 5 5 5 5 Abbildung 3.6 Windowing mit f = 68Hz-Sinussignal mit fs = Hz und = 5 Fensterlänge ist kein ganzzahliges Vielfaches der Periodenlänge => Sprungstelle In der Abbildung 3.6 ist die Sprungstelle infolge periodischer Widerholung des Signalausschnitts bei der Zeit gut ersichtlich. Die periodische Wiederholung ist nicht eine physikalisch reale Wiederholung, sondern sie entsteht durch den DFT-Algorithmus, weil nur endlich lange gemessen wurde. Vom realen Signal steht somit nur ein Ausschnitt mit Messwerten für die Berechnung des Frequenz- Spektrums zur Verfügung. Aus äquidistanten Messwerten im Zeitbereich können äquidistante Frequenzlinien berechnet werden. Der Abstand der Frequenzlinien (= Frequenzauflösung) beträgt somit fs/. Liegt die Signal-Frequenz nicht genau auf einer dieser Frequenzlinien, so sprechen die benachbarten Frequenzlinien an. Bezogen auf Abbildung 3.6 Δf = fs/ = Hz/5 = 2Hz f = 68Hz liegt also zwischen den Linien 6Hz und 8Hz. Die 6Hz-Linie spricht am stärksten an, weil sie am nächsten liegt. Gewichten des Zeitsignals (Windowing) mit einem Fenster kann die Sprungstelle verkleinern oder sogar ganz eliminieren. Aus der Abbildung 3.6 sieht man, dass durch Windowing das Signal verschwimmt und die Frequenz weniger genau erfassbar wird. Leakage wird durch Gewichtung mit einem Window erheblich reduziert. Es muss immer ein Kompromiss gefunden werden zwischen Messgenauigkeit bei der Signal-Leistung (Amplitude) und der Frequenz-Selektivität. Frequenz möglichst genau messen => kein Fenster Signalleistung möglichst genau messen => mit Fenster Abbildung 3.5 Leakage-Effekt bei der FFT, Betragsspektrum, [].
ZHW, DSV, 27/4, Rur&Hrt 3-9 ZHW, DSV, 27/4, Rur&Hrt 3- Rechteck-Fenster = ohne Gewichtung Zeitsignal.5 5 - -.5.5 Hamming-Fenster gewichtetes Zeitsignal.5 5 - -.5.5 Kaiser-Fenster mit Beta = 2 gewichtetes Zeitsignal.5 5 - -.5.5 Kaiser-Fenster mit Beta = 7 gewichtetes Zeitsignal.5 5 - -.5.5 5 5 5 5 5 5 5 5 Abbildung 3.7 Windowing mit einem 8Hz-Sinussignal mit fs = Hz und = 5 Fensterlänge ist ein ganzzahliges Vielfaches der Periodenlänge => keine Sprungstelle Abbildung 3.7 zeigt den Fall, dass die Frequenz des zu messenden Signals genau auf einer Frequenzlinie liegt. In diesem Fall gibt es keine Sprungstelle im periodisch fortgesetzten Signal. Beim Rechteck-Fenster spricht genau diese eine Frequenzlinie an. Durch das Gewichten mit einem Fenster wird das Zeitsignal etwas verfälscht, was sich in einem breiteren Spektrum bemerkbar macht. Leakage lässt sich ganz vermeiden, wenn die Fensterlänge für die FFT ein Vielfaches der Periodendauer des Signals beträgt. Auf Windowing kann verzichtet werden. Windowing ist hier sogar nachteilig! Die Abbildungen 3.6 und 3.7 wurden mit dem Matlab-Skript dsvkap3_dftfft_windowing.m erstellt. Für den Fensterentwurf unter Matlab steht das Kommando wintool zur Verfügung. Mit help window resp. doc window können Erklärungen und Listen mit den verfügbaren Fenstern angezeigt werden. Mathematisch entspricht der Multiplikation im Zeitbereich eine Faltung im Frequenzbereich (siehe Kapitel 2.9.3 Fouriertransformation) x(t) w(t) - X(f) W(f) Damit kann Leakage mathematisch und numerisch korrekt gerechnet werden. Sie ist auch eine andere (präzisere) Sichtweise auf die oben gegebene intuitive Erklärung für das Leakage. 3.7. Schnelle Fouriertransformation (FFT) Die Verarbeitungszeit für einen Algorithmus hängt wesentlich von der Anzahl Multiplikationen ab, die ein Rechner ausführen muss. Der Aufwand zur Berechnung der Spektralwerte beträgt mit der DFT ca. 2 komplexe Multiplikationen, siehe Gleichung (3.3). Cooley und Tukey haben 965 die Fast Fourier Transformation entwickelt. Mit dem FFT- Algorithmus lassen sich die DFT-Werte mit einem Aufwand von ca. log 2 () komplexen Multiplikationen berechnen, was einer enormen Reduktion des Aufwands entspricht. Für eine Blocklänge von =24 zum Beispiel müssten mit der DFT ca. Million Multiplikationen berechnet werden, während mit der FFT nur ca. Multiplikationen anfallen. Es gibt allerdings Anwendungen (z.b. Detektion DTMF-Wählton), in denen nur wenige Spektralwerte interessieren. In diesen Anwendungen kann es durchaus vorteilhaft sein, mit der DFT die wenigen Spektralwerte direkt und nicht mit der FFT alle möglichen DFT-Werte zu berechnen. Mit dem Görtzel-Algorithmus [2] ist es z.b. möglich, einzelne DFT-Werte X[m ] mit IIR-Filtern. bzw. 2. Ordnung rekursiv zu berechnen. Die Grundidee bei der FFT besteht darin, eine -Punkt DFT in zwei /2-Punkt DFTs aufzuteilen, eine über die geraden und eine über die ungeraden Abtastwerte. Im Folgenden nehmen wir der Einfachheit wegen an, dass eine Zweierpotenz ist. Wenn man in der Definition (3.3) der DFT eine Aufteilung für die geraden und die ungeraden Abtastwerte x[2n] und x[2n+] vornimmt, erhält man /2- /2- m2n m(2n+ ) n= n=, (3.9) X[m] = x[2n] W + x[2n+] W m =,,..., wobei der Term W =e -j2π/ weight oder twiddle factor genannt wird und nur eine Funktion von ist. W weist die Symmetrie W 2mn =W /2 mn auf. Der Ausdruck (3.9) kann deshalb wie folgt vereinfacht werden, /2- /2- mn m mn /2 /2 n= n=. (3.) X[m] = x[2n] W + W x[2n+] W m =,,..., Die beiden Summen oben stellen /2-Punkt DFTs dar. Für die Berechnung von (3.) sind jetzt aber nur noch 2 (/2) 2 + komplexe Multiplikationen erforderlich, statt 2 für die DFT in der ursprünglichen Form. Diese Reduktion ist für grosse (z.b. =24) bereits beträchtlich. Die beiden kurzen DFTs im Ausdruck (3.) können nun sukzessive in DFTs halber Länge unterteilt werden, bis letztlich nur noch 2-Punkt-DFTs zu berechnen sind. Man bezeichnet FFT-Algorithmen, die die Eingangsfolge x[n] wie oben beschrieben in immer kürzere Teilfolgen unterteilen, decimation-in-time FFT-Algorithmen. Umgekehrt gibt es auch decimation-in-frequency Algorithmen, die die Ausgangsfolge X[n] in immer kürzere Teilfolgen unterteilen. In Abbildung 3. ist das Signalflussdiagramm zur Berechnung des FFT-Algorithmus für =4 gemäss Gleichung (3.) dargestellt. Die Addition ist mit zusammenlaufenden Pfaden dargestellt. Die Multiplikation mit ist nicht speziell gekennzeichnet.
ZHW, DSV, 27/4, Rur&Hrt 3- ZHW, DSV, 27/4, Rur&Hrt 3-2 x[] => x[2] => x[] => x[3] => - - -j Abbildung 3.8 Signalflussdiagramm der 4-Punkt FFT mit Bitumkehr am Eingang. Das Spektrum kann in log 2 () unabhängigen Teilschritten mit Hilfe von je /2 sogenannten butterflys berechnet werden. Es ist nur Vektor mit komplexen Speicherwerten erforderlich (in-place computation)! Die Eingangswerte sind seltsam sortiert und müssen umsortiert werden, was ein Bestandteil des Algorithmus ist. Die korrekte Reihenfolge erhält man, wenn man den Zeitindex n von x[n] binär darstellt und für die Speicherung rückwärts liest (bit-reversed-adressierung bzw. Bitumkehr, siehe Abbildung 3.8). Der FFT-Algorithmus ist so wichtig in der digitalen Signalverarbeitung, dass die meisten umerikprogramme und DSP-Entwicklungsumgebungen FFT-Library-Routinen bereitstellen. In der Matlab Signal Processing Toolbox z.b. gibt es die Funktionen fft()und ifft(). In [3] gibt es gut dokumentierte C-Beispielprogramme für den Fall, dass keine Routinen zur Verfügung stehen. 3.8. FFT von reellwertigen Signalen Eine -Punkt FFT transformiert komplexe Zeitwerte in komplexe Spektralwerte. In der Praxis sind die meisten Zeitsignale x[n] aber reellwertig, denn sie repräsentieren zum Beispiel einen Spannungsverlauf in Funktion der Zeit. Selbstverständlich ist es möglich, mit einer -Punkt FFT aus reellen Zeitwerten komplexe Spektralwerte zu berechnen. Dazu muss man im Speicher einfach die Imaginärteile der Speicherwerte mit ull initialisieren, siehe Abbildung 3.9. reellwertiges Zeitsignal Re{x[]} = x[] Im{x[]} = Re{x[]} = x[] Im{x[]} = Re{x[-]} = x[-] Im{x[-]} = - -Punkt FFT j X[] = (x[]+x[2]) + (-j) (x[]+x[3]) X[] = (x[]-x[2]) + (-j) (x[]-x[3]) X[2] = (x[]+x[2]) + (-j) 2 (x[]+x[3]) X[3] = (x[]-x[2]) + (-j) 3 (x[]-x[3]) komplexes Spektrum Re{X[]} Im{X[]} Re{X[]} Im{X[]} Re{X[-]} Im{X[-]} Dank der in-place Berechnung ist im Speicher nur Vektor mit komplexen Werten erforderlich. Der Vektor x mit den Zeitwerten wird im Laufe der Berechungen durch den Vektor X mit den Spektralwerten überschrieben. Man kann aber vermuten, dass man effizienter arbeiten kann. Tatsächlich gibt es 2 Verbesserungsmöglichkeiten Eine Verbesserungsmöglichkeit besteht darin, mit einer einzigen -Punkt FFT gleichzeitig zwei -Punkt Spektren von zwei verschiedenen, reellwertigen Zeitsignalen (z.b. linker und rechter Stereokanal) zu berechnen. Eine andere Verbesserungsmöglichkeit besteht darin, mit einer kurzen /2-Punkt FFT ein grosses -Punkt Spektrum eines reellwertigen Zeitsignals zu berechnen und so Rechenzeit und Speicherplatz zu sparen. -Punkt FFT von 2 reellwertigen Zeitsignalen mit je Abtastwerten Wir betrachten zuerst die gleichzeitige Berechnung von zwei -Punkt Spektren X [m] und X 2 [m] mit Hilfe einer einzigen -Punkt FFT, siehe Abbildung 3.. x [] x [] x [-] x 2 [] x 2 [] x 2 [-] Re{y[]} Im{y[]} Packing Re{y[-]} Im{y[-]} x [] x 2 [] x [] x 2 [] x [-] x 2 [-] Zeitbereich -Punkt FFT Re{Y[]} Im{Y[]} Re{Y[]} Im{Y[]} Re{Y[-]} Im{Y[-]} Frequenzbereich Splitting X [] X [] X [-] X 2 [] X 2 [] X 2 [-] Abbildung 3. Berechnung von zwei -Punkt Spektren mit einer einzigen -Punkt FFT. Im. Schritt bildet man aus den beiden verschiedenen, reellwertigen Zeitsignalen x [n] und x 2 [n] der Länge einen komplexen Inputvektor y[n] = x [n] + j x 2 [n], n=,...,-, (3.) für die FFT, indem man die geraden Speicherzellen im FFT-Buffer mit x [n], n=,...,-, und die ungeraden Speicherzellen mit x 2 [n], n=,...,-, füllt, siehe Abbildung 3.. Im 2. Schritt berechnet man mit Hilfe der FFT aus den komplexen Werten y[n], n=,...,-, die komplexen Spektralwerte Y[m], m=,...,-. Wegen der Linearität der DFT gilt Y[m] = X [m] + j X 2 [m] (3.2) Die gewünschten Spektren X [m] und X 2 [m] sind komplex und können deshalb nicht einfach durch Bildung des Realteils und des Imaginärteils in Gleichung (3.2) bestimmt werden, wie man vielleicht auf den ersten Blick vermuten mag. Abbildung 3.9 -Punkt FFT eines Zeitsignals x[n] mit reellen Abtastwerten.
ZHW, DSV, 27/4, Rur&Hrt 3-3 ZHW, DSV, 27/4, Rur&Hrt 3-4 Um die beiden gewünschten Spektren X [m] und X 2 [m] aus dem FFT-Spektrum Y[m] heraus zu trennen, werden im 3. Schritt deshalb die folgenden Summen gebildet (Y[m] + Y*[-m])/2 = (X [m] + j X 2 [m] + X *[-m] - j X 2 *[-m])/2 (Y[m] - Y*[-m])/2j = (X [m] + j X 2 [m] - X *[-m] + j X 2 *[-m])/2j wobei m=,...,-. In Gleichung (3.3) stellt z* den konjugiert komplexen Wert von z dar. Ausserdem ist in der Umformung Gleichung (3.2) sowie die Identität (z +z 2 )* = z *+z 2 * verwendet worden. Für das -Punkt FFT-Spektrum eines reellwertigen Zeitsignals x[n] gilt aber die Symmetrie wobei m =,..., -. (3.3) X*[-m] = X[m] (3.4) Durch Einsetzen von (3.4) in (3.3) erhält man die gewünschte Spektrumstrennung X [m] = (Y[m] + Y*[-m]) / 2 X 2 [m] = (Y[m] - Y*[-m]) / 2j, wobei m=,...,-. Wegen der Symmetrie Y*[]=Y[] gilt für die DC-Werte insbesondere X [] = Re{Y[]} und X 2 [] = Im{Y[]}. (3.5) /2-Punkt FFT eines reellwertigen Zeitsignals mit Abtastwerten Wir betrachten nun die Berechnung eines -Punkt Spektrums eines reellwertigen Zeitsignals x[n] mit Hilfe einer (kurzen) /2-Punkt FFT, siehe Abbildung 3.. Dann berechnet man die /2-Punkt FFT und erhält /2 komplexe Spektralwerte Y[m] = X e [m] + j X o [m], m=,...,/2-. (3.7) Das Spektrum Y[m] setzt sich aus dem even-spektrum X e [m] und dem odd-spektrum X o [m] zusammen. Gemäss Gleichung (3.) kann das -Punkt Spektrum X[m] aber aus den zwei /2-Punkt-Spektren X e [m] und X o [m] wie folgt zusammengesetzt werden, X[m] = X e [m] + e j2πm/ X o [m], m=,...,/2-. (3.8) Verwendet man jetzt wieder die Symmetrie (3.4), kann man analog zur Herleitung oben zeigen, dass man das gewünschte Spektrum X[m] wie folgt bestimmen kann (siehe [2], [3]) wobei m=,...,-. X[m] =.5 (Y[m] + Y*[-m]) -.5 j (Y[m] - Y*[-m]) e j2πm/ (3.9) In der Praxis nennt man die oben beschriebenen Verfahren manchmal etwas unpräzis komplexe FFT und reelle FFT. In [3] gibt es gut dokumentierte C-Beispielprogramme für den Fall, dass keine Routinen für die reelle FFT zur Verfügung stehen. 3.9. Echtzeit-Signalverarbeitung mit der FFT (fakultativ) Die Ausgangsfolge eines Digitalfilters kann mit Hilfe der diskreten Faltung direkt im Zeitbereich bestimmt werden. Alternativ kann die Ausgangsfolge aber auch mit Hilfe der FFT und der IFFT indirekt via Frequenzbereich bestimmt werden, siehe Abbildung 3.2. y[] y[] y[/2-] x[]=x e [] x[]=x o [] x[2]=x e [] x[3]=x o [] x[-2] =x e [/2-] x[-]=x o [/2-] Zeitbereich /2-Punkt FFT Re{Y[]} Im{Y[]} Re{Y[]} Im{Y[]} Re{Y[/2-]} Im{Y[/2-]} Frequenzbereich Zusammenfügen X[] X[] X[2] X[3] X[-2] X[-] Je nach Aufgabe kann sich der Umweg über den Frequenzbereich dank der Effizienz der FFT/IFFT sogar aufwandmässig lohnen. X[m] Y[m] x[n] FFT IFFT y[n] H[m] = FFT{ h[n] } Abbildung 3.2 Bestimmung der Ausgangsfolge eines Digitalfilters via Frequenzbereich. Abbildung 3. Berechnung eines -Punkt Spektrums mit einer /2-Punkt FFT. Zuerst bildet man aus dem reellwertigen Zeitsignal x[n] der Länge einen Eingangsvektor für die FFT mit /2 komplexen Werten y[n] = x[2n] + j x[2n+] = x e [n] + j x o [n], n=,...,/2-, (3.6) indem man die geraden Speicherzellen im FFT-Buffer mit den geraden bzw. even-werten x e [n], n=,...,/2-, und die ungeraden Speicherzellen mit den ungeraden bzw. odd-werten x o [n], n=,...,/2-, füllt, siehe Abbildung 3.. Bei der in Abbildung 3.2 dargestellten Alternative gibt es aber eine Schwierigkeit. Die Multiplikation der DFT-Spektren im Frequenzbereich entspricht der zyklischen Faltung der entsprechenden Zahlenfolgen im Zeitbereich, d.h. m= y [ n] = x[ n] h[ n] = h[ m] x[( n m) mod ] (3.2) Die DFT betrachtet nämlich die Signale x[n] und y[n] als periodisch. Für die Echtzeit-Verarbeitung braucht es aber die lineare Faltung ohne die Modulo-Operation im Ausdruck (3.2). Deshalb bedient man sich eines Tricks. Die zyklische Faltung stimmt mit der linearen Faltung überein, wenn die Folgen x[n] und h[n] entsprechend mit ullen ergänzt werden.
ZHW, DSV, 27/4, Rur&Hrt 3-5 In Abbildung 3.3 ist die FFT-Echtzeit-Verarbeitung mit der overlap-add-methode dargestellt. Die Eingangsfolge x[n] wird in Segmente x M [n] mit M Abtastwerten unterteilt. Jedes Segment wird mit L-M ullen ergänzt und einer L-Punkt-FFT unterzogen. Das resultierende Spektrum werde mit X L [m] bezeichnet. Die Filter-Stossantwort h[n] der Länge + wird mit L-- ullen ergänzt und auch einer L-Punkt-FFT unterzogen. Die Bestimmung des diskreten Frequenzgangs H L [m] muss nur einmal gemacht werden. Die Spektren X L [m] der verlängerten Segmente werden je mit dem diskreten Frequenzgang H L [m] multipliziert. Dieser Multiplikation im Frequenzbereich entspricht die zyklische Faltung im Zeitbereich. Letztere ist aber Dank der ullen-ergänzung identisch mit der linearen Faltung, solange L > M+. Mit Hilfe der IFFT werden die gefilterten Segmente y L [n] bestimmt. Sie haben die Länge L>M und überlappen sich. Die Ausgangsfolge y[n] kann bestimmt werden, indem man die gefilterten Segmente y L [n] überlappend addiert (Superposition bei einem linearen System). In der Matlab Signal Processing Toolbox gibt es die Funktion fftfilt(), die auf der overlap-add-methode basiert. Es exisitiert noch ein anderes Segmentierverfahren (overlapsave). Segmente mit M Abtastwerten x[n] M M M M x [n] h[n] M L-M + L-- ullen L>M+ L-Punkt-FFT => Multiplikation X L [m] H L [m] => L-Punkt-IFFT y L [n] L L overlap! L y[n] M M M M Abbildung 3.3 FFT-Echtzeitsignalverarbeitung mit der overlap-add-methode.