firpfb_rrrf

Finite impulse response (FIR) polyphase filter bank (PFB)

Variants: firpfb_cccf, firpfb_crcf, firpfb_rrrf

Public Functions

firpfb_rrrf firpfb_rrrf_create(unsigned int _num_filters, float * _h, unsigned int _h_len)
firpfb_rrrf firpfb_rrrf_create_default(unsigned int _num_filters, unsigned int _m)
firpfb_rrrf firpfb_rrrf_create_kaiser(unsigned int _num_filters, unsigned int _m, float _fc, float _as)
firpfb_rrrf firpfb_rrrf_create_rnyquist(int _type, unsigned int _num_filters, unsigned int _k, unsigned int _m, float _beta)
firpfb_rrrf firpfb_rrrf_create_drnyquist(int _type, unsigned int _num_filters, unsigned int _k, unsigned int _m, float _beta)
firpfb_rrrf firpfb_rrrf_recreate(firpfb_rrrf _q, unsigned int _num_filters, float * _h, unsigned int _h_len)
firpfb_rrrf firpfb_rrrf_copy(firpfb_rrrf _q)
int firpfb_rrrf_destroy(firpfb_rrrf _q)
int firpfb_rrrf_print(firpfb_rrrf _q)
int firpfb_rrrf_set_scale(firpfb_rrrf _q, float _scale)
int firpfb_rrrf_get_scale(firpfb_rrrf _q, float * _scale)
int firpfb_rrrf_reset(firpfb_rrrf _q)
int firpfb_rrrf_push(firpfb_rrrf _q, float _x)
int firpfb_rrrf_write(firpfb_rrrf _q, float * _x, unsigned int _n)
int firpfb_rrrf_execute(firpfb_rrrf _q, unsigned int _i, float * _y)
int firpfb_rrrf_execute_block(firpfb_rrrf _q, unsigned int _i, float * _x, unsigned int _n, float * _y)

Interfaces

firpfb_rrrf firpfb_rrrf_create(unsigned int _num_filters, float * _h, unsigned int _h_len)

multiple of _num_filters), _h_len >= _num_filters

  • _num_filters :
  • _h :
  • _h_len :

firpfb_rrrf firpfb_rrrf_create_default(unsigned int _num_filters, unsigned int _m)

Create firpfb object using Kaiser-Bessel windowed sinc filter design method, using default values for cut-off frequency and stop-band attenuation. This is equivalent to: FIRPFB(_create_kaiser)(_M, _m, 0.5, 60.0) which creates a Nyquist filter at the appropriate cut-off frequency.

  • _num_filters : number of filters in the bank, 1 < _num_filters
  • _m : filter semi-length [samples], 0 < _m

firpfb_rrrf firpfb_rrrf_create_kaiser(unsigned int _num_filters, unsigned int _m, float _fc, float _as)

Create firpfb object using Kaiser-Bessel windowed sinc filter design method

  • _num_filters : number of filters in the bank, 1 < _num_filters
  • _m : filter semi-length [samples], 0 < _m
  • _fc : filter normalized cut-off frequency, 0 < _fc < 0.5
  • _as : filter stop-band suppression [dB], 0 < _as

firpfb_rrrf firpfb_rrrf_create_rnyquist(int _type, unsigned int _num_filters, unsigned int _k, unsigned int _m, float _beta)

Create firpfb from square-root Nyquist prototype

  • _type : filter type (e.g. LIQUID_FIRFILT_RRC)
  • _num_filters : number of filters in the bank, 1 < _num_filters
  • _k : nominal samples/symbol, 1 < _k
  • _m : filter delay [symbols], 0 < _m
  • _beta : rolloff factor, 0 < _beta <= 1

firpfb_rrrf firpfb_rrrf_create_drnyquist(int _type, unsigned int _num_filters, unsigned int _k, unsigned int _m, float _beta)

Create from square-root derivative Nyquist prototype

  • _type : filter type (e.g. LIQUID_FIRFILT_RRC)
  • _num_filters : number of filters in the bank, 1 < _num_filters
  • _k : nominal samples/symbol, 1 < _k
  • _m : filter delay [symbols], 0 < _m
  • _beta : rolloff factor, 0 < _beta <= 1

firpfb_rrrf firpfb_rrrf_recreate(firpfb_rrrf _q, unsigned int _num_filters, float * _h, unsigned int _h_len)

multiple of _num_filters), _h_len >= _num_filters

  • _q :
  • _num_filters :
  • _h :
  • _h_len :

firpfb_rrrf firpfb_rrrf_copy(firpfb_rrrf _q)

Copy object including all internal objects and state

int firpfb_rrrf_destroy(firpfb_rrrf _q)

Destroy firpfb object, freeing all internal memory and destroying all internal objects

int firpfb_rrrf_print(firpfb_rrrf _q)

Print firpfb object's parameters to stdout

int firpfb_rrrf_set_scale(firpfb_rrrf _q, float _scale)

Set output scaling for filter

  • _q : filter object
  • _scale : scaling factor to apply to each output sample

int firpfb_rrrf_get_scale(firpfb_rrrf _q, float * _scale)

Get output scaling for filter

  • _q : filter object
  • _scale : scaling factor applied to each output sample

int firpfb_rrrf_reset(firpfb_rrrf _q)

Reset firpfb object's internal buffer

int firpfb_rrrf_push(firpfb_rrrf _q, float _x)

Push sample into filter object's internal buffer

  • _q : filter object
  • _x : single input sample

int firpfb_rrrf_write(firpfb_rrrf _q, float * _x, unsigned int _n)

Write a block of samples into object's internal buffer

  • _q : filter object
  • _x : single input sample
  • _n :

int firpfb_rrrf_execute(firpfb_rrrf _q, unsigned int _i, float * _y)

Execute vector dot product on the filter's internal buffer and coefficients using the coefficients from sub-filter at index _i

  • _q : firpfb object
  • _i : index of filter to use
  • _y : pointer to output sample

int firpfb_rrrf_execute_block(firpfb_rrrf _q, unsigned int _i, float * _x, unsigned int _n, float * _y)

Execute the filter on a block of input samples, all using index _i. In-place operation is permitted (_x and _y may point to the same place in memory)

  • _q : firpfb object
  • _i : index of filter to use
  • _x : pointer to input array, shape: (_n, 1)
  • _n : number of input, output samples
  • _y : pointer to output array, shape: (_n, 1)