itpp::Root_Raised_Cosine< T1 > Class Template Reference

(Square) Root Raised Cosine (RRC) Pulse Shaper More...

`#include <itpp/comm/pulse_shape.h>`

Inheritance diagram for itpp::Root_Raised_Cosine< T1 >:

## Public Member Functions

| Root_Raised_Cosine ()
| Constructor.
| Root_Raised_Cosine (double roll_off_factor, int filter_length=6, int upsampling_factor=8)
| Constructor.
virtual | ~Root_Raised_Cosine ()
| Destructor.
void | set_pulse_shape (double roll_off_factor, int filter_length=6, int upsampling_factor=8)
| Set pulse_shape, roll_off_factor between 0 and 1, filter_length even.
double | get_roll_off (void) const
| Get the Roll-off factor.
void | set_pulse_shape (const Vec< double > &impulse_response, int upsampling_factor)
| Set the general impulse response of the FIR filter. More...
Vec< double > | get_pulse_shape (void) const
| Get the pulse shape.
int | get_upsampling_factor () const
| Get the over sampling factor.
int | get_pulse_length () const
| Get the length of the pulse in number of symbols.
int | get_filter_length () const
| Get the length of the internal FIR filter.
void | shape_symbols (const Vec< T1 > &input, Vec< T1 > &output)
| Shape the input symbols performing upsampling.
Vec< T1 > | shape_symbols (const Vec< T1 > &input)
| Shape the input symbols performing upsampling.
void | shape_samples (const Vec< T1 > &input, Vec< T1 > &output)
| Shape the input samples already upsampled.
Vec< T1 > | shape_samples (const Vec< T1 > &input)
| Shape the input symbols already upsampled.
void | clear (void)
| Clear internal states.

## Protected Attributes

double | roll_off_factor
| The roll off factor (i.e. alpha)
Vec< double > | impulse_response
| The impulse resounse of the pulse shaping filter.
MA_Filter< T1, double, T1 > | shaping_filter
| The pulse shaping filter.
int | pulse_length
| Length in symbols.
int | upsampling_factor
| Samples per input symbol.
bool | setup_done
| Ensures that setup is called before any other member function.

## Detailed Description

### template<class T1>
class itpp::Root_Raised_Cosine< T1 >

(Square) Root Raised Cosine (RRC) Pulse Shaper

Upsamples and shapes symbols as square root raised cosine pulses with a given roll-off factor (zero is not allowed

- use raised cosine instead). The Root Raised Cosine pulse shape is defined as:

It is called square root raised cosine since it is defined as the square root of the raised cosine pulse in the frequency domain. Thus with a transmitter pulse shape of root raised cosine and a receiver filter that is root raised cosine, the overall response will be a raised cosine.

For more details see e.g. Lee & Messerschmitt, p. 228. Observe that the shaping is done with a FIR filter where the size is given by filter_length * over_sample_factor + 1. The first samples in the output will therefore be zero or small before the memory of the filter is filled.

What is important, when using RRC shaping in a transmission system with the AWGN channel, the mean power of the output samples is not normalised, so the channel noise variance (or shaped signal) should be scaled appropriately.

The class is templated as follows: `T1` is the type of the input and the output samples. An example of usage is:

#include "itpp/itcomm.h"
Root_Raised_Cosine<double> rrc(0.5,6,8);
BPSK bpsk;
vec symbols, samples;
symbols = bpsk.modulate_bits(randb(20));
samples = rrc.shape_symbols(symbols);
itpp::randb
bin randb(void)
Generates a random bit (equally likely 0s and 1s)
Definition: random.h:793
itcomm.h
Include file for the IT++ communications module.

Definition at line 226 of file pulse_shape.h.

## Member Function Documentation

## set_pulse_shape()

void itpp::Pulse_Shape< T1, double , T1 >::set_pulse_shape | ( | const Vec< T2 > & | impulse_response,
|  | int | upsampling_factor
| ) |  |

inherited

Set the general impulse response of the FIR filter.

Observe that the pulse shape must have a duration of an integer number of symbols. Thus the length of the impulse response-1 modulo over sampling is an integer.

Definition at line 89 of file pulse_shape.h.

The documentation for this class was generated from the following file:

- itpp/comm/pulse_shape.h

Generated on Tue Aug 17 2021 10:59:15 for IT++ by Doxygen 1.9.1