Vorüberlegung: Die Gleichung λ =0 hat die N verschiedenen Lösungen λ k =e 2 π i k / N,,, Aus λ = (λ λ k ) k =0 folgt durch Koeffizientenvergleich e 2 π i k/ N = λ k =0 Für jede ganze Zahl m gilt m d. h. λ k ist ebenfalls eine Lösung von λ =0. Für k 1 k 2 gilt: m λ k1 (λ km ) N =λ k m N =(λ kn ) m =1, λ = e2 π i k1m/ N m k2 e 2 π i k m/ N =e2 π i(k1 k2) m/ N 2 3.3-1
Ist m kein ganzzahliges Vielfaches von N, dann folgt: m In diesem Fall ist die Abbildung λ k λ k bijektiv, d. h. sie bildet die Menge {λ k, k = 0, N - 1} umkehrbar eindeutig auf sich selbst ab. Damit ist gezeigt: (k 1 k 2 )m N m Z λ k 1 1 m λ k 2 e 2 π i k m/ N ={ 0 für m z N N für m=z N, z Z 3.3-2
Definition: Gegeben ist die Zeitreihe Die diskrete Fourier-Transformation der Zeitreihe ist definiert durch X k = n=0 =x (n Δ t ), n=0,,. e 2 π i k n / N,,, Eigenschaften: Die N reellen Werte der Zeitreihe werden auf N komplexe Werte abgebildet. 3.3-3
Durch die für k = 0, N 1 berechneten Werte liegen die Werte für beliebige k fest: Die diskrete Fourier-Transformation ist periodisch mit der Periode N : N 1 X k+n = n=0 Für negative k gilt: N 1 e 2 π i(k+n )n /N = n=0 X k = X k e 2 π i k n /N e 2 π i n =X k Daraus folgt: Für k = N/2 folgt: X N k =X k+n =X k = X k X N /2 =X N / 2 +N =X N /2 = X N /2 3.3-4
Inverse Transformation: Für die inverse Transformation muss das lineare Gleichungssystem X k = n=0 e 2 π i k n / N,,, nach aufgelöst werden. Zunächst gilt: X k e 2 π i k ν/ N = n=0 e 2 π i k (n ν)/n, ν=0, 3.3-5
Summation über k ergibt: N 1 X k e 2 π i k ν/ N = n=0 e 2 π i k(n ν)/ N = n=0 ( N) 2πi k(ν n)/ e Wegen ν n < N gilt für die Summe in der Klammer: e 2 π i k (ν n)/ N ={ 0 für ν n N für ν=n Damit folgt: X k e 2 π i k n / N =N 3.3-6
Damit gilt für die inverse Transformation: = 1 N X k e 2 π i k n / N, n=0,, Schnelle Fourier-Transformation: Für die Berechnung der bei der diskreten Fourier-Transformation auftretenden Summen wurden effiziente Algorithmen entwickelt, die als schnelle Fourier-Transformation (Fast Fourier Transformation, FFT) bezeichnet werden. Erste Algorithmen dafür wurden bereits von Gauß angegeben. 3.3-7
Berechnung mit GNU Octave: Die Funktion X = fft(x, fft(x, N) N) berechnet die diskrete Fourier-Transformation. Eingabe: x Feld mit den Werten der Zeitreihe N Anzahl der Werte (optional) Ausgabe: X Feld mit den Werten der Fourier-Transformation Ist N größer als die Anzahl der Elemente von x, so wird mit 0 aufgefüllt. Ist N kleiner, wird abgeschnitten. 3.3-8
Die Funktion x = ifft(x) ifft(x) berechnet die inverse diskrete Fourier-Transformation. Eingabe: X Feld mit den Fourier-Koeffizienten (wie von fft ausgegeben) Ausgabe: x Feld mit den Werten der Zeitreihe Beispiel: Das folgende Skript berechnet die diskrete Fourier-Transformation der Zeitreihe =sin 2 (π n/ N ), n=0,, N 3.3-9
# Kapitel 3.3: Diskrete Fourier-Transformation # # -------------------------------------------------------------- N = 11; # Zeitreihe n = 0 : N; x = sin(pi * n / N).^2; % N + 1 = 12 Werte # Diskrete Fourier-Transformation X = fft(x); # Rücktransformation xr = ifft(x); # Fehler e = max(abs(x - xr)) 3.3-10
# Darstellung figure(1, "position", [100, 500, 1000, 700], "paperposition", [0, 0, 25, 14]); subplot(2, 1, 1); plot(n, x, "or", n, xr, "*b"); legend("x_n", "x_{rn}"); legend("left"); legend("boxoff"); grid; xlabel("n"); subplot(2, 1, 2); plot(n, real(x), "or", n, imag(x), "*b"); legend("re(x_k)", "Im(X_k)"); legend("left"); legend("boxoff"); grid; xlabel("k"); print("v3_3.jpg", "-djpg", "-FArial:14"); Ausgabe: e = 1.1102e-16 3.3-11
3.3-12