Skip to content

komm.RootRaisedCosinePulse

Root-raised-cosine pulse. It is a pulse whose spectrum is given by the square root of the spectrum of the raised cosine pulse with same roll-off factor.

The waveform of the root-raised cosine pulse is depicted below for $\alpha = 0.25$, and for $\alpha = 0.75$.

Root-raised-cosine pulse with roll-off factor 0.25. Root-raised-cosine pulse with roll-off factor 0.75.

For more details, see Wikipedia: Root-raised-cosine filter.

Attributes:

  • rolloff (float)

    The roll-off factor $\alpha$ of the pulse. Must satisfy $0 \leq \alpha \leq 1$. The default value is 1.0.

waveform()

The waveform $p(t)$ of the pulse.

For the root-raised-cosine pulse, it is given by $$ p(t) = \frac{\sin ( 2 \pi f_1 t ) + 4 \alpha t \cos ( 2 \pi f_2 t )}{\pi t ( 1 - (4 \alpha t)^2 )}, $$ where $\alpha$ is the roll-off factor, $f_1 = (1 - \alpha) / 2$, and $f_2 = (1 + \alpha) / 2$.

Examples:

>>> pulse = komm.RootRaisedCosinePulse(rolloff=0.25)
>>> pulse.waveform(
...     [-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0],
... ).round(3)
array([-0.064,  0.238,  0.622,  0.943,  1.068,  0.943,  0.622,  0.238,
       -0.064])

spectrum()

The spectrum $\hat{p}(f)$ of the pulse.

Examples:

>>> pulse = komm.RootRaisedCosinePulse(rolloff=0.25)
>>> np.abs(pulse.spectrum(
...     [-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0],
... )).round(3)
array([0.   , 0.   , 0.707, 1.   , 1.   , 1.   , 0.707, 0.   , 0.   ])

autocorrelation()

The autocorrelation function $R(\tau)$ of the pulse.

For the root-raised-cosine pulse, it is given by $$ R(\tau) = \sinc(\tau) \frac{\cos(\pi \alpha \tau)}{1 - (2 \alpha \tau)^2}. $$

Examples:

>>> pulse = komm.RootRaisedCosinePulse(rolloff=0.25)
>>> pulse.autocorrelation(
...     [-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0],
... ).round(3)
array([0.   , 0.29 , 0.627, 0.897, 1.   , 0.897, 0.627, 0.29 , 0.   ])

energy_density_spectrum()

The energy density spectrum $S(f)$ of the pulse.

For the root-raised-cosine pulse, it is given by $$ S(f) = \begin{cases} 1, & |f| \leq f_1, \\[1ex] \dfrac{1}{2} \left( 1 + \cos \left( \pi \dfrac{|f| - f_1}{f_2 - f_1}\right) \right), & f_1 \leq |f| \leq f_2, \\[1ex] 0, & \text{otherwise}. \end{cases} $$

Examples:

>>> pulse = komm.RootRaisedCosinePulse(rolloff=0.25)
>>> pulse.energy_density_spectrum(
...     [-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0],
... ).round(3)
array([0. , 0. , 0.5, 1. , 1. , 1. , 0.5, 0. , 0. ])