itpp::Pulse_Shape< T1, T2, T3 > Class Template Reference

General FIR Pulse Shape. More...

`#include <itpp/comm/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.

## Detailed Description

template<class T1, class T2, class T3>
class itpp::Pulse_Shape< T1, T2, T3 >

General FIR Pulse Shape.

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);
itpp::Array
General array class.
Definition array.h:105
itpp::BPSK
BPSK modulator with real symbols.
Definition modulator.h:877
itpp::BPSK::modulate_bits
void modulate_bits(const bvec &bits, vec &output) const
Modulate bits into BPSK symbols in complex domain.
Definition modulator.cpp:310
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 73 of file pulse_shape.h.

## Constructor & Destructor Documentation

## Pulse_Shape() [1/2]

template<class T1 , class T2 , class T3 >

itpp::Pulse_Shape< T1, T2, T3 >::Pulse_Shape | ( |  | ) |

Constructor.

Definition at line 252 of file pulse_shape.h.

## Pulse_Shape() [2/2]

template<class T1 , class T2 , class T3 >

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

Constructor.

Definition at line 261 of file pulse_shape.h.

## ~Pulse_Shape()

template<class T1 , class T2 , class T3 >

virtual itpp::Pulse_Shape< T1, T2, T3 >::~Pulse_Shape | ( |  | ) |

inlinevirtual

Destructor.

Definition at line 81 of file pulse_shape.h.

## Member Function Documentation

## set_pulse_shape()

template<class T1 , class T2 , class T3 >

void itpp::Pulse_Shape< T1, T2, T3 >::set_pulse_shape | ( | const Vec< T2 > & | 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.

Definition at line 267 of file pulse_shape.h.

References it_error_if, and itpp::Array< T >::size().

## get_pulse_shape()

template<class T1 , class T2 , class T3 >

Vec< T2 > itpp::Pulse_Shape< T1, T2, T3 >::get_pulse_shape | ( | void |  | ) | const

Get the pulse shape.

Definition at line 282 of file pulse_shape.h.

## get_upsampling_factor()

template<class T1 , class T2 , class T3 >

int itpp::Pulse_Shape< T1, T2, T3 >::get_upsampling_factor | ( | void |  | ) | const

Get the over sampling factor.

Definition at line 288 of file pulse_shape.h.

## get_pulse_length()

template<class T1 , class T2 , class T3 >

int itpp::Pulse_Shape< T1, T2, T3 >::get_pulse_length | ( | void |  | ) | const

Get the length of the pulse in number of symbols.

Definition at line 294 of file pulse_shape.h.

## get_filter_length()

template<class T1 , class T2 , class T3 >

int itpp::Pulse_Shape< T1, T2, T3 >::get_filter_length | ( | void |  | ) | const

Get the length of the internal FIR filter.

Definition at line 300 of file pulse_shape.h.

References itpp::Array< T >::size().

## shape_symbols() [1/2]

template<class T1 , class T2 , class T3 >

void itpp::Pulse_Shape< T1, T2, T3 >::shape_symbols | ( | const Vec< T1 > & | input,
|  | Vec< T3 > & | output
| ) |  |

Shape the input symbols performing upsampling.

Definition at line 306 of file pulse_shape.h.

References it_assert, it_error_if, and itpp::Array< T >::size().

## shape_symbols() [2/2]

template<class T1 , class T2 , class T3 >

Vec< T3 > itpp::Pulse_Shape< T1, T2, T3 >::shape_symbols | ( | const Vec< T1 > & | input | ) |

Shape the input symbols performing upsampling.

Definition at line 319 of file pulse_shape.h.

References it_assert.

## shape_samples() [1/2]

template<class T1 , class T2 , class T3 >

void itpp::Pulse_Shape< T1, T2, T3 >::shape_samples | ( | const Vec< T1 > & | input,
|  | Vec< T3 > & | output
| ) |  |

Shape the input samples already upsampled.

Definition at line 328 of file pulse_shape.h.

References it_assert, it_error_if, and itpp::Array< T >::size().

## shape_samples() [2/2]

template<class T1 , class T2 , class T3 >

Vec< T3 > itpp::Pulse_Shape< T1, T2, T3 >::shape_samples | ( | const Vec< T1 > & | input | ) |

Shape the input symbols already upsampled.

Definition at line 341 of file pulse_shape.h.

References it_assert.

## clear()

template<class T1 , class T2 , class T3 >

void itpp::Pulse_Shape< T1, T2, T3 >::clear | ( | void |  | ) |

Clear internal states.

Definition at line 350 of file pulse_shape.h.

References it_assert.

## Member Data Documentation

## impulse_response

template<class T1 , class T2 , class T3 >

Vec<T2> itpp::Pulse_Shape< T1, T2, T3 >::impulse_response

protected

The impulse resounse of the pulse shaping filter.

Definition at line 114 of file pulse_shape.h.

## shaping_filter

template<class T1 , class T2 , class T3 >

MA_Filter<T1, T2, T3> itpp::Pulse_Shape< T1, T2, T3 >::shaping_filter

protected

The pulse shaping filter.

Definition at line 116 of file pulse_shape.h.

## pulse_length

template<class T1 , class T2 , class T3 >

int itpp::Pulse_Shape< T1, T2, T3 >::pulse_length

protected

Length in symbols.

Definition at line 118 of file pulse_shape.h.

## upsampling_factor

template<class T1 , class T2 , class T3 >

int itpp::Pulse_Shape< T1, T2, T3 >::upsampling_factor

protected

Samples per input symbol.

Definition at line 120 of file pulse_shape.h.

## setup_done

template<class T1 , class T2 , class T3 >

bool itpp::Pulse_Shape< T1, T2, T3 >::setup_done

protected

Ensures that setup is called before any other member function.

Definition at line 122 of file pulse_shape.h.

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

- itpp/comm/pulse_shape.h

Generated on Mon Jun 10 2024 11:49:39 for IT++ by Doxygen 1.9.8