Rotator Block
Der Rotator Block dreht die Phasenlage eines komplexen Signals kontinuierlich — die Grundlage jeder softwareseitigen Frequenzverschiebung.
1. Beschreibung des Blocks
Der Rotator-Block (blocks.rotator_cc) multipliziert jedes komplexe Eingangssample mit einem komplexen Rotationsfaktor, dessen Phase sich von Sample zu Sample um einen konstanten Winkel (phase_inc) weiterdreht. Diese fortlaufende Phasendrehung entspricht mathematisch einer Multiplikation mit $e^{j\omega n}$ — dem zeitdiskreten Äquivalent einer Frequenzverschiebung im komplexen Basisband. Die Amplitude des Signals bleibt dabei unverändert, nur die Phasenlage jeder Frequenzkomponente wird verschoben.

Der übergebene Frequenzwert wird dabei über $\text{phase\_inc} = 2\pi f / f_s$ in eine kontinuierliche Phasenänderung pro Sample umgerechnet.
2. Technischer Einsatz
Der Rotator-Block ist der elementare Baustein hinter jeder softwareseitigen Frequenzverschiebung eines komplexen Signals — z. B. um ein Signal aus dem Basisband auf eine andere Zwischenfrequenz zu verschieben, oder als interner Baustein eines Frequency-Xlating-Filters. Der fertige Frequency Shift Block ruft intern genau diesen Rotator-Block auf, um den gewünschten Frequenzversatz zu erzielen — beide Ansätze sind im komplexen Zahlenraum mathematisch äquivalent.
Das folgende Blockschaltbild zeigt die typische Verwendung von Rotator innerhalb einer Signalverarbeitungskette:

3. Parameter und Dimensionierung
| Parameter | Typ/Einheit | Bedeutung | Dimensionierungshinweis |
|---|---|---|---|
phase_inc (Phase Increment) |
Radiant/Sample | Phasendrehung pro Sample | aus gewünschter Frequenzverschiebung berechnen: $\text{phase\_inc} = 2\pi f / f_s$ |
tag_inc_update (Tag Increment Updates) |
Bool | ob Änderungen von phase_inc per Stream-Tag statt per Callback erfolgen |
Standard „No"; „Yes" nur nötig, wenn die Frequenzänderung sample-genau mit dem Datenstrom synchronisiert werden muss |
4. Ein- und Ausgänge
| Ein-/Ausgang | Typ |
|---|---|
| Eingang | Complex |
| Eingang (optional) | Message-Port cmd zur Laufzeitsteuerung |
| Ausgang | Complex |
Der Block akzeptiert nur komplexe Ein- und Ausgänge — für ein reelles Signal muss zuvor eine komplexe Basisbanddarstellung (z. B. per Hilbert-Transformation) erzeugt werden.
5. Weitere wichtige Aspekte
Live-Parameteränderung: set_phase_inc(...) erlaubt eine Anpassung der Frequenzverschiebung zur Laufzeit, z. B. über einen QT-GUI-Regler.
Verwandter Block: Frequency Shift — der fertig parametrisierte Block, der phase_inc bereits intern aus einer in Hz angegebenen Frequenz berechnet und den Rotator-Block kapselt.