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.

Formel: Umrechnung von Frequenz in Phaseninkrement

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:

Blockschaltbild mit Rotator Block

Kompatibilität: Die Ergebnisse dieses Aufbaus sind identisch zu denen im nativen Frequency Shift Block. Beide Ansätze sind im komplexen Zahlenraum mathematisch äquivalent — siehe auch die Grundlagen zu komplexen Zahlen.

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.