Grundlagen
Fourier-Transformation
Wie sich ein Signal in seine Frequenzkomponenten zerlegen lässt — von der Summe einzelner Sinuswellen bis zur diskreten Fourier-Transformation.
Die Fourier-Transformation ist eine fundamentale mathematische Methode, die eine Funktion der Zeit in ihre Frequenzkomponenten zerlegt. Während die kontinuierliche Fourier-Transformation beliebige zeitliche Verläufe analysiert, beschreibt die sogenannte Fourier-Reihe die Eigenschaft, dass sich jedes periodische Signal als eine Summe aus einzelnen Sinus- und Cosinuswellen verschiedener Frequenzen darstellen lässt.
Jede dieser einzelnen Sinusfunktionen besitzt dabei eine bestimmte Amplitude, eine Frequenz (bzw. Periodendauer) sowie eine Phase bezogen auf ein Referenzsignal (im SDR-Kontext beispielsweise dem lokalen Oszillator, LO).
Ein klassisches Beispiel ist die Annäherung eines Rechteck-Signals. Addiert man zu einer Grundschwingung (erste Harmonische) ungerade Vielfache dieser Frequenz mit abnehmender Amplitude, nähert sich die Kurvenform immer weiter einem perfekten Rechteck an. Die Addition der ersten fünf Komponenten zeigt diesen Effekt bereits sehr deutlich:
$$y(x) = \frac{4}{\pi} \left( \sin(x) + \frac{1}{3}\sin(3x) + \frac{1}{5}\sin(5x) + \frac{1}{7}\sin(7x) + \frac{1}{9}\sin(9x) \right)$$

Nimmt man an, dass ein Abschnitt auf der $x$-Achse der Grafik $1,\text{ms}$ dauert, lässt sich erkennen, dass eine vollständige Schwingung der Grundwelle $8,\text{ms}$ benötigt, bis sie sich wiederholt. Dieser Wert heißt Periodendauer $T$. Die Frequenz $f$ ist der Kehrwert der Periodendauer:
$$f = \frac{1}{T} = \frac{1}{8,\text{ms}} = 125,\text{Hz}$$
In Blau ist die Grundfrequenz ($125,\text{Hz}$) abgebildet. Dazu addiert werden die ungeraden Oberschwingungen (Harmonischen): Die dreifache Frequenz entspricht $375,\text{Hz}$, die fünffache $625,\text{Hz}$ etc. Jede dieser diskreten Frequenzen findet sich später mit ihrer entsprechenden Amplitude als einzelne Linie im Frequenzspektrum wieder. Um das Signal perfekt und ohne die typischen Welligkeiten an den Kanten (Gibbssches Phänomen) abzubilden, wäre theoretisch eine unendliche Anzahl an Sinuswellen notwendig.
Um kontinuierliche, aperiodische Signale mathematisch zu erfassen, wird die Fourier-Transformation als Integral definiert:
$$X(f) = \int_{-\infty}^{\infty} x(t) \cdot e^{-j 2 \pi f t} , dt$$
Die komplexe Exponentialfunktion $e^{-j 2 \pi f t}$ enthält über die Eulersche Formel die Real- und Imaginäranteile ($\cos$ und $\sin$). Das Integral scannt das kontinuierliche Signal $x(t)$ über die gesamte Zeitachse und bildet es exakt in das Spektrum $X(f)$ ab. Umgekehrt lässt sich das Signal über die Inverse Fourier-Transformation (IFT) aus dem Frequenzbereich wieder exakt in den Zeitbereich zurückrechnen:
$$x(t) = \int_{-\infty}^{\infty} X(f) \cdot e^{j 2 \pi f t} , df$$
Glücklicherweise müssen wir uns in der digitalen, zeitdiskreten Welt nicht mit analytischen Integralen beschäftigen.
Diskrete Fourier-Transformation (DFT)
Die Diskrete Fourier-Transformation (DFT) ist die Variante der Fourier-Transformation, die speziell für die Verarbeitung digitaler, abgetasteter Signale entwickelt wurde. Während die klassische Transformation mit kontinuierlichen Funktionen arbeitet, analysiert die DFT die Frequenzkomponenten einer endlichen Folge von diskreten Datenpunkten (Samples).
Eine definierte Anzahl an Datenpunkten – die sogenannte FFT-Größe oder Anzahl der Bins – wird hierbei als Basis in die Berechnung einbezogen. Dieses Fenster muss beispielsweise in GNU Radio in den entsprechenden Blöcken definiert werden. Um hocheffiziente Berechnungsalgorithmen nutzen zu können, wählt man für die FFT-Größe ($N$) in der Regel eine Zweierpotenz:
$$N \in {32, 64, 128, 256, \dots, 1024, 2048, 4096, 8192}$$
Die FFT-Größe hat einen direkten Einfluss auf die Frequenzauflösung und die Berechnungskomplexität des Systems. Eine größere FFT bietet eine deutlich höhere Frequenzauflösung, kann also eng beieinander liegende Signalkomponenten präziser trennen. Allerdings benötigt sie dafür auch mehr Rechenressourcen, Speicher und erzeugt eine höhere Signalverzögerung (Latenz).
Der mathematische Zusammenhang zwischen der FFT-Größe, der Abtastrate ($f_s$) des Eingangssignals und der resultierenden Frequenzauflösung ($\Delta f$) lautet:
$$\Delta f = \frac{\text{Abtastrate } (f_s)}{\text{FFT-Größe } (N)}$$
Beispiel: Bei einer gewählten FFT-Größe von $N = 8192$ und einer SDR-Abtastrate von $f_s = 100,\text{kHz}$ beträgt die Frequenzauflösung pro Frequenzstützpunkt (Bin):
$$\Delta f = \frac{100.000,\text{Hz}}{8192} \approx 12{,}2,\text{Hz}$$
Zur praxisgerechten und schnellen Berechnung der DFT auf Computern und FPGAs wurde die Fast Fourier Transform (FFT) entwickelt – ein optimierter Algorithmus, der den Rechenaufwand drastisch reduziert. In GNU Radio lässt sich mithilfe des QT GUI Frequency Sink-Blocks das Spektrum eines empfangenen Signals über genau dieses FFT-Verfahren in Echtzeit darstellen.