Grundlagen
IQ-Signale und Zeigerdarstellung
Wie aus einer rotierenden komplexen Zahl reale Funksignale entstehen.
Eine harmonische Schwingung ist der Ausgangspunkt für das Verständnis komplexer Signale im SDR (Software Defined Radio). Betrachten wir eine klassische sinus- oder cosinusförmige Welle, wird sie durch drei Komponenten definiert:
- Amplitude $M$: Der Spitzenwert (Scheitelwert) der Schwingung.
- Frequenz $f$: Meist als Kreisfrequenz $\omega = 2\pi f$ ausgedrückt.
- Phase $\phi$: Die zeitliche Verschiebung zum Startpunkt.

Die Eulersche Formel als Brücke
In der analogen Welt messen wir Signale als reine reelle Spannungen über die Zeit. In der digitalen Signalverarbeitung (DSP) nutzen wir jedoch die fundamentale Eulersche Formel, um ein Signal als rotierenden Zeiger im komplexen Raum darzustellen:
$$e^{j\theta} = \cos(\theta) + j \cdot \sin(\theta)$$
Wenn wir diesen Zeiger mit der Kreisfrequenz $\omega$ rotieren lassen, erhalten wir ein komplexes Signal:
$$M \cdot e^{j(\omega t + \phi)} = M \cdot e^{j\phi} \cdot e^{j\omega t}$$
Der Term $M \cdot e^{j\phi}$ beschreibt den Zustand des Signals zum Startzeitpunkt ($t=0$). Und genau hier kommt die IQ-Darstellung ins Spiel: Wir können diesen statischen Zeiger in der komplexen Ebene genau wie jede andere komplexe Zahl in zwei rechtwinklige Komponenten zerlegen:
$$z = I + j \cdot Q$$
- I (In-Phase): Der Realteil des Signalzeigers ($I = M \cdot \cos(\phi)$).
- Q (Quadratur): Der Imaginärteil des Signalzeigers ($Q = M \cdot \sin(\phi)$), der um exakt $90^\circ$ phasenverschoben (in Quadratur) zum I-Signal steht.
Eine phasenverschobene Cosinusschwingung lässt sich somit mathematisch elegant ausdrücken als:
$$M \cdot \cos(\omega t + \phi) = I \cdot \cos(\omega t) - Q \cdot \sin(\omega t)$$
Warum machen wir das im SDR?
Durch die Aufteilung eines Signals in einen $I$- und einen $Q$-Wert pro Abtastpunkt (Sample) kann Software mathematisch extrem einfach die aktuelle Amplitude (Magnitude) und die Phase berechnen, ohne den zeitlichen Verlauf abwarten zu müssen. In SDR-Software wie GNU Radio gibt es dafür dedizierte Blöcke (z. B. Complex to Mag), die im Hintergrund genau diese Transformationen berechnen.
Das ist kein rein theoretisches Konstrukt: Der A/D-Wandler eines SDR-Empfängers liefert pro Sample tatsächlich zwei Werte zurück — den ersten für die In-Phase-Komponente $I$, den zweiten für die Quadratur-Komponente $Q$. Jedes Sample, das aus der Hardware kommt, ist damit bereits ein fertiger IQ-Wert.
Amplituden- und Phasenmodulation durch I/Q
Verändert man die Beträge von $I$ und $Q$, verändert sich das resultierende Signal auf unterschiedliche Weise — je nachdem, ob beide Komponenten gleich oder unterschiedlich skaliert werden:
Gleichmäßige Veränderung von $I$ und $Q$ um denselben Faktor $n$ ändert nur die Amplitude des resultierenden Signals, nicht seine Phase. Das Ergebnis ist eine Amplitudenmodulation.

Unterschiedliche Veränderung von $I$ und $Q$ verschiebt dagegen die Phase des resultierenden Signals — das Ergebnis ist eine Phasenmodulation.

Für eine reine Amplitudenmodulation (AM) wäre die $Q$-Komponente also gar nicht zwingend nötig. Bei komplexeren Modulationsverfahren wie QAM oder QPSK werden $I$ und $Q$ jedoch unabhängig voneinander genutzt, um Informationen zu codieren. Durch die Kombination von Amplituden- und Phasenmodulation lassen sich so zwei Informationen gleichzeitig und orthogonal — also ohne sich gegenseitig zu stören — in einem Signal übertragen.
Constellation- und Vektordarstellung
IQ-Werte lassen sich im sogenannten Constellation-Diagramm darstellen: Für jeden Sample-Zeitpunkt wird der komplexe Wert $I + jQ$ als Punkt in der komplexen Ebene eingezeichnet. Bei digital modulierten Signalen ergeben sich dabei diskrete, durch Rauschen leicht verschmierte Punktwolken an den möglichen Symbolzuständen — bei analogen Signalen wandert der Punkt dagegen kontinuierlich.
Verbindet man die aufeinanderfolgenden Punkte zusätzlich mit Linien, erhält man ein Vektordiagramm, das zusätzlich zeigt, in welcher Reihenfolge die Zustände durchlaufen werden.


Eine ausführlichere Behandlung der zugehörigen GNU-Radio-Blöcke findet sich im Artikel Constellation-Blöcke.