firpfb_crcf

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

Variants: firpfb_cccf, firpfb_crcf, firpfb_rrrf

Public Functions

firpfb_crcf firpfb_crcf_create(unsigned int _num_filters, float * _h, unsigned int _h_len)
firpfb_crcf firpfb_crcf_create_default(unsigned int _num_filters, unsigned int _m)
firpfb_crcf firpfb_crcf_create_kaiser(unsigned int _num_filters, unsigned int _m, float _fc, float _as)
firpfb_crcf firpfb_crcf_create_rnyquist(int _type, unsigned int _num_filters, unsigned int _k, unsigned int _m, float _beta)
firpfb_crcf firpfb_crcf_create_drnyquist(int _type, unsigned int _num_filters, unsigned int _k, unsigned int _m, float _beta)
firpfb_crcf firpfb_crcf_recreate(firpfb_crcf _q, unsigned int _num_filters, float * _h, unsigned int _h_len)
firpfb_crcf firpfb_crcf_copy(firpfb_crcf _q)
int firpfb_crcf_destroy(firpfb_crcf _q)
int firpfb_crcf_print(firpfb_crcf _q)
int firpfb_crcf_set_scale(firpfb_crcf _q, float _scale)
int firpfb_crcf_get_scale(firpfb_crcf _q, float * _scale)
int firpfb_crcf_reset(firpfb_crcf _q)
int firpfb_crcf_push(firpfb_crcf _q, float complex _x)
int firpfb_crcf_write(firpfb_crcf _q, float complex * _x, unsigned int _n)
int firpfb_crcf_execute(firpfb_crcf _q, unsigned int _i, float complex * _y)
int firpfb_crcf_execute_block(firpfb_crcf _q, unsigned int _i, float complex * _x, unsigned int _n, float complex * _y)

Interfaces

firpfb_crcf firpfb_crcf_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_crcf firpfb_crcf_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_crcf firpfb_crcf_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_crcf firpfb_crcf_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_crcf firpfb_crcf_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_crcf firpfb_crcf_recreate(firpfb_crcf _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_crcf firpfb_crcf_copy(firpfb_crcf _q)

Copy object including all internal objects and state

int firpfb_crcf_destroy(firpfb_crcf _q)

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

int firpfb_crcf_print(firpfb_crcf _q)

Print firpfb object's parameters to stdout

int firpfb_crcf_set_scale(firpfb_crcf _q, float _scale)

Set output scaling for filter

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

int firpfb_crcf_get_scale(firpfb_crcf _q, float * _scale)

Get output scaling for filter

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

int firpfb_crcf_reset(firpfb_crcf _q)

Reset firpfb object's internal buffer

int firpfb_crcf_push(firpfb_crcf _q, float complex _x)

Push sample into filter object's internal buffer

  • _q : filter object
  • _x : single input sample

int firpfb_crcf_write(firpfb_crcf _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_crcf_execute(firpfb_crcf _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_crcf_execute_block(firpfb_crcf _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)