firpfb_cccf

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

Variants: firpfb_cccf, firpfb_crcf, firpfb_rrrf

Public Functions

firpfb_cccf firpfb_cccf_create(unsigned int _num_filters, float complex * _h, unsigned int _h_len)
firpfb_cccf firpfb_cccf_create_default(unsigned int _num_filters, unsigned int _m)
firpfb_cccf firpfb_cccf_create_kaiser(unsigned int _num_filters, unsigned int _m, float _fc, float _as)
firpfb_cccf firpfb_cccf_create_rnyquist(int _type, unsigned int _num_filters, unsigned int _k, unsigned int _m, float _beta)
firpfb_cccf firpfb_cccf_create_drnyquist(int _type, unsigned int _num_filters, unsigned int _k, unsigned int _m, float _beta)
firpfb_cccf firpfb_cccf_recreate(firpfb_cccf _q, unsigned int _num_filters, float complex * _h, unsigned int _h_len)
firpfb_cccf firpfb_cccf_copy(firpfb_cccf _q)
int firpfb_cccf_destroy(firpfb_cccf _q)
int firpfb_cccf_print(firpfb_cccf _q)
int firpfb_cccf_set_scale(firpfb_cccf _q, float complex _scale)
int firpfb_cccf_get_scale(firpfb_cccf _q, float complex * _scale)
int firpfb_cccf_reset(firpfb_cccf _q)
int firpfb_cccf_push(firpfb_cccf _q, float complex _x)
int firpfb_cccf_write(firpfb_cccf _q, float complex * _x, unsigned int _n)
int firpfb_cccf_execute(firpfb_cccf _q, unsigned int _i, float complex * _y)
int firpfb_cccf_execute_block(firpfb_cccf _q, unsigned int _i, float complex * _x, unsigned int _n, float complex * _y)

Interfaces

firpfb_cccf firpfb_cccf_create(unsigned int _num_filters, float complex * _h, unsigned int _h_len)

multiple of _num_filters), _h_len >= _num_filters

  • _num_filters :
  • _h :
  • _h_len :

firpfb_cccf firpfb_cccf_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_cccf firpfb_cccf_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_cccf firpfb_cccf_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_cccf firpfb_cccf_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_cccf firpfb_cccf_recreate(firpfb_cccf _q, unsigned int _num_filters, float complex * _h, unsigned int _h_len)

multiple of _num_filters), _h_len >= _num_filters

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

firpfb_cccf firpfb_cccf_copy(firpfb_cccf _q)

Copy object including all internal objects and state

int firpfb_cccf_destroy(firpfb_cccf _q)

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

int firpfb_cccf_print(firpfb_cccf _q)

Print firpfb object's parameters to stdout

int firpfb_cccf_set_scale(firpfb_cccf _q, float complex _scale)

Set output scaling for filter

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

int firpfb_cccf_get_scale(firpfb_cccf _q, float complex * _scale)

Get output scaling for filter

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

int firpfb_cccf_reset(firpfb_cccf _q)

Reset firpfb object's internal buffer

int firpfb_cccf_push(firpfb_cccf _q, float complex _x)

Push sample into filter object's internal buffer

  • _q : filter object
  • _x : single input sample

int firpfb_cccf_write(firpfb_cccf _q, float complex * _x, unsigned int _n)

Write a block of samples into object's internal buffer

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

int firpfb_cccf_execute(firpfb_cccf _q, unsigned int _i, float complex * _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_cccf_execute_block(firpfb_cccf _q, unsigned int _i, float complex * _x, unsigned int _n, float complex * _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)