# Rotator

The **Rotator** block performs a frequency translation. This operation is called a rotation because if you plot the real and imaginary numbers in a complex sample (I and Q) in a complex unit circle, rotating around this circle produces a wave at a given frequency. Making such a rotation clockwise or counterclockwise produces a positive or negative frequency, which is effectively what this block does mathematically.

## Mathematical Description[edit]

The phase increment (in radians) is the amount of additional phase shift added to the signal every sample. So, the rotator block is the equivalent of multiplying by a complex sine. The "increment" is the amount of additional phase shift added to the signal every sample. So, the block is the equivalent of multiplying by a complex sine.

## Parameters[edit]

(*R*): *Run-time adjustable*

- Phase Increment (
*R*) - Acts as the rotational velocity.

## Example Flowgraph[edit]

### Example 1[edit]

In the example below, the Rotator block shifts a stream of samples down 50 kHz. In this example, a Frequency-Shift Keying signal is captured slightly offset because the HackRF One generates a large spike at the exact center frequency. The solution is to simply capture at an offset and then use the Rotator to re-adjust the frequency alignment as desired.

### Example 2[edit]

In the example below a constant source, set to 0.5, is fed into the rotator, thus producing a sine wave. The phase increment is set to 0.01 radians and the sample rate is 100kHz, so that equates to 1000 radians every second, or 1000/(2pi) = 159 cycles per second. This corresponds to a period of about 6ms, as shown in the time sink.

## Source Files[edit]

- C++ files
- TODO

- Header files
- TODO

- Public header files
- TODO

- Block definition
- TODO