FFT

Die FFT („Fast Fourier Transformation“) ist ein Algorithmus zur Analyse von Signalen im Frequenzbereich.

Aufteilung des Signals nach Frequenzen

Wir gehen ab jetzt davon aus, dass wir mehrere Signale unterschiedlicher Frequenz, Amplitude und Phasenlage überlagert im digitalen Signal vorliegen haben. Das kann z. B. folgendermaßen aussehen, wenn die Zahlen im Speicher (120 Speicherstellen) dargestellt werden:

Der FFT-Algorithmus gibt als Ergebnis Amplitude und Phase zu definierten Frequenzen aus. Wir gehen dabei davon aus, dass sich die Frequenz eines Signalanteils über der Zeit nicht ändert. Damit können wir Anteile des Signals über ihre Frequenz identifizieren. Die Frequenz ist viel besser als der Zeitverlauf dazu geeignet, die Signale voneinander zu separieren und dann zu analysieren. Nach Frequenzen getrennt sieht der obere Zeitverlauf folgendermaßen aus:

Werden diese beiden Signale addiert, erhalten wir wieder das ursprüngliche Signal. Nachdem der FFT-Algorithmus die Aufspaltung des Signals in die unterschiedlichen Frequenzen vollzogen hat, ist die Ermittlung der Signalparameter Spitzenwert und Phase einfacher möglich. Diese Frequenzen geben Sie dem Algorithmus vor. Wie funktioniert das?

Ermittlung des Spitzenwertes

Der FFT-Algorithmus ist ein auf geringe Rechenzeit optimierter Algorithmus, der deshalb aus seinem Code heraus schwierig nachvollziehbar ist. Stattdessen gehen wir der prinzipiellen Funktionsweise der Fourier-Transformation auf den Grund.
Werden zwei Signale A(t) = A0 ∙ sin (2π ∙ fA ∙ t) und B(t) = B0 ∙ sin (2π ∙ fB ∙ t) gleicher Frequenz fA = fB miteinander multipliziert, sieht das Ergebnis folgendermaßen aus:

Werden zwei Signale A(t) = A0 ∙ sin (2π ∙ fA ∙ t) und B(t) = B0 ∙ sin (2π ∙ fB ∙ t) unterschiedlicher Frequenz fA ≠ fB miteinander multipliziert, sieht das Ergebnis folgendermaßen aus:

Das graue Signal aus A ∙ B ist in der oberen der beiden Abbildungen nur positiv. In der unteren Abbildung ist es mal positiv und mal negativ. Der Mittelwert des Produkts der Signale ist in der oberen Abbildung eine positive Zahl. Zu jeder Zeit ist das Produkt A ∙ B positiv. In der unteren Abbildung heben sich positive und negative Signalanteile in A ∙ B genau gegenseitig auf, so dass der Mittelwert 0 ist. Wir vereinfachen hier zunächst, dass beide Signale die gleiche Phase haben, also zeitlich nicht zueinander verschoben sind.

Die zentrale Aussage lautet:


Der Mittelwert des Produkts zweier Signale mit unterschiedlicher Frequenz ist gleich 0.

Der Mittelwert des Produkts zweier Signale mit gleicher Frequenz entspricht dem Term A0 ∙ B0 / 2.

Es gilt als Formel:

Der Parameter t für die Zeit in analogen Signalen wird bei digitalen Signalen zu einem Zähler n. Das sinusförmige abgetastete zeitdiskrete Signal A(t) wird als A(n) aus dem Speicher gelesen. Ein sinusförmiges Signal, das mit 20 Abtastwerten pro Periode digitalisiert worden ist, liegt folgendermaßen im Speicher vor:

Es gilt also

In vielen Anwendungen wissen wir, in welchem Bereich Frequenzen liegen, die im Signal vorhanden sind. Wenn wir z. B. die Spannung an der Steckdose messen, dann wissen wir, dass die Frequenz f = 50 Hz beträgt. Bei der Leitfähigkeitsmessung aus dem vorherigen Kapitel erzeugen wir ein Signal mit f = 1 kHz. Auch da wissen wir, dass Spannung und Strom beide die Frequenz f = 1 kHz haben. Wir können also testen, ob ein Signal bei einer bestimmten Frequenz vorhanden ist, und wie hoch dessen Spitzenwert ist. Dafür müssen wir das Signal nur mit einem Testsignal mit der Frequenz multiplizieren, bei der wir ein Signal erwarten.

Zurück zum Beispiel der Leitfähigkeitsmessung: Um zu ermitteln, welche Amplitude bei 1 kHz im digitalen Datenstrom der Spannung U enthalten ist, multiplizieren wir den Datenstrom mit einem Testsignal T mit der Frequenz fT = 1 kHz und dem Spitzenwert T0 = 1:

Das Spannungssignal U kommt aus dem ADC. Das Testsignal wird von uns vorgegeben, also können wir es optimieren. Bei T0 = 1 vereinfacht sich das Ergebnis zu

Mit dieser Formel können wir den Spitzenwert U0 des Signals ermitteln, das als Datenstrom im Speicher abgelegt ist.

Wir betrachten als Beispiel 20 Zahlen für U(n), die nacheinander vom ADC abgetastet worden sind. Der Spitzenwert von U (blau) ist hier 5. Wir betrachten zusätzlich das Testsignal T(n) mit dem Spitzenwert 1 (rot). Die Frequenzen von U und T sind gleich gewählt.

In grau sehen Sie den Verlauf von U(n) ∙ T(n) und in gelb den Mittelwert des grauen Signals. Es gilt

In der Tabelle unten sehen Sie die zugehörigen Daten aus Excel. Der Mittelwert ganz unten ist der Mittelwert der Zahlen in der rechten Spalte.

Anwendung auf viele Frequenzen

Die FFT führt diese Rechnung (sehr stark optimiert) für viele Frequenzen durch, die eine konstanten Abstand zueinander haben. Sie geben dabei die unterste Frequenz, die oberste Frequenz und die Anzahl der Frequenzen gleichen Abstands dazwischen an. Das folgende Beispiel zeigt ein Signal mit zwei Frequenzanteilen:

Es gilt


U = 3 ∙ sin(2π 100Hz ∙ t) + 1,5 ∙ sin(2π 300Hz ∙ t)

Wir multiplizieren nacheinander Testsignale

T1 = 1 ∙ sin(2π 100Hz ∙ t)

T2 = 1 ∙ sin(2π 200Hz ∙ t)

T3 = 1 ∙ sin(2π 300Hz ∙ t)

T4 = 1 ∙ sin(2π 400Hz ∙ t)


mit dem Spannungssignal U(t). Das Ergebnis lautet:

Die Spitzenwerte werden also korrekt ermittelt. Die klassische Darstellung der Spitzenwerte bei unterschiedlichen diskreten Frequenzen sieht folgendermaßen aus:

Sie können im Excel-Sheet unten versuchen, diese Frequenzanalyse selbstständig zu programmieren.

Phasen

Bisher hatten wir vereinfacht, dass die Phasen aller Signale 0 sind. Alle Signalanteile sind zueinander also nicht zeitlich verschoben. Das ist in realen Messsignalen aber nicht der Fall. Deshalb brauchen wir eine allgemeinere Lösung. Um Spitzenwerte und Phasen zu ermitteln, multiplizieren wir das Eingangssignal pro Test-Frequenz mit zwei Testsignalen, die um 90° oder π / 2 zueinander phasenverschoben sind:


TSin = 1 ∙ sin(2π ∙ f ∙ t)

TCos = 1 ∙ cos(2π ∙ f ∙ t)

Sie erhalten damit Realteil und Imaginärteil des Eingangssignals bezogen auf die Phase des Testsignals. Es gilt

Spitzenwert und Phase berechnen Sie mit

Aufgabe: Verschieben Sie einen Signalanteil einer Frequenz im Excel-Beispiel in der Phase. Programmieren Sie die Auswertung so, dass Phase und Spitzenwert aller Frequenzanteile richtig errechnet werden.

Weiter