#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().
 1.5.8