Im letzten Teil haben wir die Fourier-Koeffizienten eines Signals s numerisch berechnet, unter der Voraussetzung, die Periodendauer des Signals zu kennen.
Wenn wir ein Signal messen, kennen wir dessen Periodendauer normalerweise nicht. Wir messen einfach während der Messdauer mit der Sampling-Frequenz (Abtastrate)
die momentanen Werte
. Wie beeinflusst das die Fourier-Koeffizienten?
Abb. 1 zeigt nochmals unser Signal
aus dem letzten Teil.

Weil wir die Periodendauer jetzt nicht kennen, haben wir das Signal einfach eine beliebige Messdauer
, z.B.
, lang gemessen. Dabei haben wir
Werte aufgenommen (rote Punkte). Die Sampling-Frequenz ist also
,
und hängt neben der Anzahl der Messwerte auch von der Messdauer ab.
scheinbare Periodizität mit der Messdauer
Der hellblaue Verlauf zeigt, wie unser Signal tatsächlich periodisch weitergeht. Aufgrund unserer Messung glauben wir aber, dass unser gemessenes Signal sich mit der Messdauer periodisch wiederholt (hellrote Kurve). Warum ist das so?
Aus unseren Messwerten berechnen wir die Fourier-Koeffizienten
. Wie wir schon gesehen haben, sind letztere periodisch:
. Wenn wir daraus unser Signal zurückrechnen, erhalten wir ebenfalls eine Periodizität:
weil ist. Wenn wir aber N zu unserem Zeitindex addieren, sind wir zeitlich um
weitergegangen:
.
Diese Periodizität ist nicht real, sondern ein Artefakt, weil unsere Messdauer kein ganzzahliges Vielfaches der tatsächlichen Periodendauer ist. In den meisten Fällen sorgt sie für einen Sprung im Signal am Ende der scheinbaren Periode.
Amplitudenspektrum
Mit dem folgenden MATLAB/Octave-Code können wir jetzt unser Amplitudenspektrum berechnen:
% tatsächliche Periodendauer (in s) T = 2.0; % Messdauer (in s) Tm = 3.5; % Anzahl der Samples % FFT ist am effizientesten mit 2er-Potenzen N = 2^5; % Abtastzeiten (in s) tn = (0:(N - 1))*Tm/N; % das Signal sn = -1 + 3*sin(2*pi/T*tn + pi) + ... 2*sin(5*2*pi/T*tn + pi/2); % die Frequenzen der Fourier-Koeffizienten (in Hz) fk = (0:(N - 1))/Tm; % Fourier-Koeffizienten berechnen Sk = fft(sn)/N; % komplexe Amplituden Ak = 2i*Sk; Ak(1) = Ak(1)/2; % MATLAB beginnt bei 1 zu zählen % Absolutwerte der komplexen Amplituden absAk = abs(Ak); % bis 4 Hz zeichnen kmax = floor(4*Tm) + 1; plot(fk(1:kmax), absAk(1:kmax), 'o') xlabel('Frequenz in Hz') ylabel('Amplitude')
Das Ergebnis zeigt Abb. 2, und es ist – hmmm… Zunächst einmal sieht man große Amplituden nahe bei 0.5 Hz und 2.5 Hz, was gut ist. Allerdings sehen wir sie nicht bei exakt 0.5 Hz und exakt 2.5 Hz und die Größe passt auch nicht. Zusätzlich gibt es bei vielen anderen Frequenzen auch relativ große Amplituden.

Warum passen die Frequenzen nicht? Weil unser gemessenes Signal jetzt periodisch mit der Messdauer ist; daher ist die Frequenzauflösung
.
Für unseren Wert von oben ergibt sich
. Alle anderen Frequenzen sind ganzzahlige Vielfache davon – für 0.5 Hz und 2.5 Hz geht sich das aber nicht aus.
OK, wenn wir kleiner machen, indem wir die Messdauer
verlängern, können wir prinzipiell näher an unsere tatsächlichen Frequenzen herankommen. Vielleicht hilft das ja. Wenn wir das tun, müssen wir aber gleichzeitig die Anzahl der Samples erhöhen, weil die Sampling-Frequenz
sonst zu klein wird. Nehmen wir an, wir messen etwa 4-mal so lang, z.B.
und vervierfachen auch die Anzahl der Messwerte. Das Ergebnis zeigt Abb. 3.

Durch das kleinere Frequenzintervall lässt sich die Lage der beiden gesuchten Amplituden zwar besser eingrenzen, wirklich gut funktioniert es aber immer noch nicht. Dabei ist die 2.5 Hz-Amplitude besser getroffen als die 0.5 Hz-Amplitude. Der Grund ist, dass ist, was fast mit unserer Messdauer übereinstimmt.
Sollte die Messdauer zufällig in der Nähe eines ganzzahligen Vielfachen der tatsächlichen Periodendauer sein, bei uns , würden alle Amplituden besser herauskommen. Das zeigt Abb. 4, wo die Messdauer von 13.1 s auf 14.3 s erhöht wurde, und 14.3 s ist ungefähr 7-mal 2 s.

Eine weitere kleine Erhöhung der Messdauer auf 15 s verschlechtert das Ergebnis für beide Amplituden wieder (s. Abb. 5), weil 15 s weder ein ganzzahliges Vielfaches von 2 s noch von 0.4 s ist.

Exakt wird es erst wieder, wenn unsere Messdauer genau ein ganzzahliges Vielfaches der Periodendauer ist (s. Abb.5b). In allen anderen Fällen scheint es so, als würden die Amplituden in die benachbarten Frequenzen ausfließen.

Leck-Effekt (Leakage)
Dieses »Ausfließen« der Amplituden zu benachbarten Frequenzen nennt man Leck-Effekt bzw. Leakage. Er hat nichts mit der diskreten Abtastung des Signals zu tun, sondern kommt durch die Sprünge am Rand des Messintervalls zustande.
Wie wir schon in Teil 1 bzw. Teil 2 gesehen haben, benötigt so ein Sprung viele kleine, schnell rotierende Zeiger, die sich zur richtigen Zeit zu einer Art »Peitschenschlag« addieren. Dies ist noch einmal in Abb. 6 anhand eines Cosinus mit Periodendauer 4/7 s gezeigt, der alle 2 s (entsprechend der Messdauer) wiederholt wird. Weil 2 s kein ganzzahliges Vielfaches von 4/7 s ist, kommt es zu einem deutlichen Sprung.

Die Zeigersumme läuft die meiste Zeit entlang eines Kreises mit Radius 2, wie wir es für eine reine cos-Funktion mit Amplitude 2 erwarten würden. Allerdings haben wir nicht einen Zeiger, der mit der Eigenfrequenz umläuft, sondern zwei fast gleich große, deren Frequenzen leicht unter- bzw. oberhalb der Eigenfrequenz liegen. In der Mitte der Messdauer, z.B. bei 1 s, ist der Summenzeiger praktisch die Summe dieser beiden Zeiger. Alle anderen Zeiger sind zu diesem Zeitpunkt »eingerollt«.
Wenn wir jedoch in die Nähe des Sprungs kommen, rollen sich die höherfrequenten Zeiger aus und erzeugen uns den Sprung. Wie wir schon bei der Sägezahnfunktion in Teil 2 gesehen haben, wird ihre Amplitude mit kleiner. Das zeigt auch das Amplitudenspektrum in Abb. 7. Wir haben etwas unter- und etwas oberhalb der Eigenfrequenz zwei große Amplituden. Je weiter wir zu Frequenzen höher als
gehen, desto mehr nehmen die Amplituden wie
ab.

Aber warum haben wir auch Amplituden unterhalb der Eigenfrequenz? Wie gesagt, in der Mitte des Messintervalls sind praktisch nur die beiden größten Zeiger relevant. Zum Rand des Intervalls hin aber, wenn sich die hochfrequenten Zeiger auszurollen beginnen, sind die beiden größten Zeiger fast antiparallel, ihre Summe also fast 0. Deshalb werden weitere Zeiger benötigt, um die richtige Stärke des Summensignals auch am Rand des Messintervalls zu erhalten. Das sieht man noch besser, wenn man die Eigenfrequenz erhöht, z.B. auf wie in Abb. 8.

Das entsprechende Spektrum zeigt Abb. 9. Außer dass jetzt größer ist, gibt es keinen Unterschied zum Spektrum aus Abb. 7.

Wären alle Amplituden unterhalb der beiden größten gleich 0, ergäbe sich zum selben Zeitpunkt wie in Abb. 8 die Situation in Abb. 10. In der Mitte des Messintervalls sind die hoch- und niederfrequenten Anteile eingerollt und spielen keine Rolle – am Rand des Messintervalls aber schon. Wie Abb. 10 auch zeigt, schaffen die hochfrequenten Anteile den Sprung ganz alleine.

Je kleiner die Sprünge am Rand des Messintervalls sind – je näher also die Messdauer einem ganzzahligen Vielfachen von ist – desto kleiner sind die Amplituden der Frequenzen weit weg von der Eigenfrequenz.
Ein Sprung ist allerdings nicht das einzige Problem. In Abb. 11 ist der Cosinus einfach durch einen Sinus ersetzt worden. Dadurch gibt es am Rand der Messdauer keinen Sprung, aber eine Spitze. Weil die Eigenfrequenz des Sinus kein ganzzahliges Vielfaches von ist, müssen auch hier zwei relativ große Zeiger zusammenarbeiten, um näherungsweise einen Kreis vom Radius 2 zu erzeugen. Für die Spitze brauchen wir aber wieder viele kleine Zeiger. Im Prinzip haben wir das schon bei dem gleichgerichteten Sinus in Teil 2 gesehen.

Das Spektrum zeigt Abb. 12. Beim abgeschnittenen Cosinus haben sich die Zeiger für den Sprung entlang der reellen Achse addiert. Weil die Amplituden dort praktisch mit abnehmen, ist der Realteil im Wesentlichen die harmonische Reihe
, die nicht konvergiert. Da uns aber nur der Imaginärteil interessiert, war das egal. Für den Knick in Abb. 11 müssen sich die Zeiger der hohen Frequenzen aber entlang der imaginären Achse ausrollen. Weil die Amplituden hier praktisch mit
abnehmen, ist der Imaginärteil im Wesentlichen die Reihe
, die zu einem endlichen Wert konvergiert.

Die Abb. 6 und 11 sind quasi die beiden Extremfälle. Meistens liegt man dazwischen und hat einfach einen kleineren Sprung als von Minus die Amplitude auf Plus die Amplitude. Im Wesentlichen treten dadurch in den Zählern der strichlierten Einhüllenden in den Abb. 7, 9 und 12 Mischungen von und
auf, was qualitativ keine großen Auswirkungen hat.
Was wenn, wir kein reines Cosinus-Signal haben, sondern die Überlagerung der Signale aus den Abb. 6 und 8? Die komplexen Amplituden der beiden Signale mit denselben Frequenzen addieren sich, aber als Pfeile! Wir müssen daher auch ihre Phasen (Richtungen) beachten, nicht einfach nur ihre Beträge. Das Spektrum des Summensignals zeigt Abb. 13. Die strichlierte Kurve ist die Summe der Einhüllenden der beiden Einzelsignale. Offensichtlich addieren sich die Beträge der Amplituden der Einzelsignale nicht so einfach. Für sehr große bzw. sehr kleine Frequenzen passt es, aber nicht zwischen den Eigenfrequenzen der beiden Einzelsignale. (Würden die beiden Eigenfrequenzen weiter auseinander liegen, würde es auch dazwischen halbwegs passen.)

Fensterfunktion (window function)
Die Signalsprünge/-spitzen an den Rändern des Messintervalls führen also zu unerwünschten Verbreiterungen im Spektrum. Es gibt eine radikale Methode, um dieses Problem zu beseitigen: Man multipliziert das Signal mit einer Funktion, die in der Mitte der Messdauer gleich 1 ist und an den Rändern langsam gegen 0 geht. Eine solche »Fensterfunktion« wäre zB das Hann-Fenster
.
Multiplizieren wir unseren abgeschnittenen Cosinus aus Abb. 6 mit dieser Fensterfunktion, ergibt sich die Funktion in Abb. 14. Zugegeben, das Signal sieht jetzt anders aus, aber die Eigenfrequenz des Cosinus ist noch da. Und um die geht es in erster Linie. Weil das Hann-Fenster dieselbe Periodizität wie das Messintervall hat, kommen auch keine zusätzlichen Frequenzen ins Spektrum.

Das Spektrum dieser Funktion zeigt Abb. 15. Die Einhüllende, auf der alle Amplituden liegen, ist jetzt etwas komplizierter (strichlierte Kurve). Im Vergleich zur Einhüllenden ohne Fenster (punktierte Kurve) gehen die Amplituden auf beiden Seiten der Eigenfrequenz jetzt viel schneller gegen 0. Zusammen mit einer noch größeren Frequenzauflösung (längeren Messdauer) sorgt das dafür, dass wir die Frequenz genauer bestimmen können.

Die Amplituden selber haben mit der ursprünglichen Funktion allerdings nicht mehr viel zu tun. Für die meisten Anwendungen geht es aber um eine genaue Bestimmung der Frequenzen.
Es gibt zig andere Fensterfunktionen – mit speziellen Vor- und Nachteilen – auf die ich hier nicht eingehen möchte.
Phasenspektrum
Nachdem die tatsächlich im Signal vorhandenen Frequenzen nicht direkt in der DFT vorkommen, dürfen wir uns vom Phasenspektrum nicht viel erwarten. Beim abgeschnittenen Cosinus in Abb. 7 hätten wir bei 1.75 Hz eine Phase von , beim abgeschnittenen Sinus in Abb. 9 entsprechend die Phase 0. Stattdessen sieht man einen Phasen»sprung«: Unterhalb von 1.75 Hz sind alle Phasen gleich
(bzw.
), darüber sind alle 0 (bzw.
).
Ein weiteres Problem für die Phase ist, dass wir unsere Messung irgendwann gestartet haben können, und nicht dann, wenn für das Signal war. Deshalb haben wir es mit einer Zeitverschiebung
gemessen, die ebenfalls einen Einfluss auf die Phase hat (
).
Diskussion
Wenn wir ein Signal, über das wir fast nichts wissen, einfach eine Zeit lang messen, erhalten wir sein Frequenz- und Amplitudenspektrum nur näherungsweise. Solange es nur darum geht, die im Signal vorhandenen Frequenz zu bestimmen, können verschiedene Fensterfunktionen ihre Dienste leisten. Die exakten Amplituden und speziell die Phasen erhält man so nicht.
Die folgenden Punkte sollte man jedoch beachten:
- Die gewünschte Frequenzauflösung
legt die Mindestmessdauer
fest.
- Man kann die Messdauer
nicht einfach vergrößern, ohne auch die Anzahl N der Messwerte zu erhöhen, weil die Samplingfrequenz
mindestens doppelt so groß sein muss, wie die höchste interessante Frequenz im Signal.
Abschließend ist aber zu sagen, auch wenn wir nicht das exakte Spektrum des Signals erhalten, so können wir die gemessenen Signalwerte (und nur die) doch exakt aus dem Spektrum zurückrechnen.
Weiter in Teil 7.