IT++ Logo
Public Member Functions | Protected Attributes | List of all members
itpp::Raised_Cosine< T1 > Class Template Reference

Raised Cosine (RC) Pulse Shaper. More...

#include <itpp/comm/pulse_shape.h>

Inheritance diagram for itpp::Raised_Cosine< T1 >:
itpp::Pulse_Shape< T1, double, T1 >

Public Member Functions

 Raised_Cosine ()
 Raised_Cosine (double roll_off, int filter_length=6, int upsampling_factor=8)
virtual ~Raised_Cosine ()
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.
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::Raised_Cosine< T1 >

Raised Cosine (RC) Pulse Shaper.

Upsamples and shapes symbols as raised cosine pulses with a given roll-off factor $ \alpha $. The raised cosine pulse shape is defined as:

\[ p(t) = \frac{\sin(\pi t / T)}{\pi t / T} \frac{\cos(\alpha \pi t / T)}{1 - (2 \alpha t / T)^2} \]

For more details see e.g. Lee & Messerschmitt, p. 190. 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 RC 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"
Raised_Cosine<double> rc(0.5, 6, 8);
BPSK bpsk;
vec symbols, samples;
symbols = bpsk.modulate_bits(randb(20));
samples = rc.shape_symbols(symbols);

Definition at line 162 of file pulse_shape.h.

Member Function Documentation

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

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.

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

Generated on Sat Jul 6 2013 10:54:33 for IT++ by Doxygen 1.8.2