#include <pulse_shape.h>
Public Member Functions | |
Pulse_Shape () | |
Constructor. | |
Pulse_Shape (const Vec< T2 > &impulse_response, int upsampling_factor) | |
Constructor. | |
virtual | ~Pulse_Shape () |
Destructor. | |
void | set_pulse_shape (const Vec< T2 > &impulse_response, int upsampling_factor) |
Set the general impulse response of the FIR filter. | |
Vec< T2 > | 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< T3 > &output) |
Shape the input symbols performing upsampling. | |
Vec< T3 > | shape_symbols (const Vec< T1 > &input) |
Shape the input symbols performing upsampling. | |
void | shape_samples (const Vec< T1 > &input, Vec< T3 > &output) |
Shape the input samples already upsampled. | |
Vec< T3 > | shape_samples (const Vec< T1 > &input) |
Shape the input symbols already upsampled. | |
void | clear (void) |
Clear internal states. | |
Protected Attributes | |
Vec< T2 > | impulse_response |
The impulse resounse of the pulse shaping filter. | |
MA_Filter< T1, T2, T3 > | 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. |
Upsamples and shapes symbols according to a given FIR filter. Observe that since the shaping is done with a FIR filter, the first samples in the output are zero or small before the memory of the filter is filled.
The class is templated as follows:
T1
is the type of the input samples T2
is the type of the filter coefficients T3
is the type of the output samples An example of usage is:
#include "itpp/itcomm.h" vec filter_response; filter_response ="0.7 0.3 0.6"; Pulse_Shape<double,double,double> shaper(filter_response, 4); BPSK bpsk; vec symbols, samples; symbols = bpsk.modulate_bits(randb(20)); samples = shaper.shape_symbols(symbols);
void itpp::Pulse_Shape< T1, T2, T3 >::set_pulse_shape | ( | const Vec< T2 > & | impulse_response, | |
int | upsampling_factor | |||
) | [inline] |
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.
References itpp::Pulse_Shape< T1, T2, T3 >::impulse_response, it_error_if, itpp::Pulse_Shape< T1, T2, T3 >::pulse_length, itpp::Pulse_Shape< T1, T2, T3 >::setup_done, itpp::Pulse_Shape< T1, T2, T3 >::shaping_filter, itpp::Vec< Num_T >::size(), and itpp::Pulse_Shape< T1, T2, T3 >::upsampling_factor.
Referenced by itpp::Pulse_Shape< T1, T2, T3 >::Pulse_Shape().