firhilbf

Finite impulse response (FIR) Hilbert transform

Public Functions

firhilbf firhilbf_create(unsigned int _m, float _as)
firhilbf firhilbf_copy(firhilbf _q)
int firhilbf_destroy(firhilbf _q)
int firhilbf_print(firhilbf _q)
int firhilbf_reset(firhilbf _q)
int firhilbf_r2c_execute(firhilbf _q, float _x, float complex * _y)
int firhilbf_c2r_execute(firhilbf _q, float complex _x, float * _y0, float * _y1)
int firhilbf_decim_execute(firhilbf _q, float * _x, float complex * _y)
int firhilbf_decim_execute_block(firhilbf _q, float * _x, unsigned int _n, float complex * _y)
int firhilbf_interp_execute(firhilbf _q, float complex _x, float * _y)
int firhilbf_interp_execute_block(firhilbf _q, float complex * _x, unsigned int _n, float * _y)

Interfaces

firhilbf firhilbf_create(unsigned int _m, float _as)

Create a firhilb object with a particular filter semi-length and desired stop-band attenuation. Internally the object designs a half-band filter based on applying a Kaiser-Bessel window to a sinc function to guarantee zeros at all off-center odd indexed samples.

  • _m : filter semi-length, delay is \( 2 m + 1 \)
  • _as : filter stop-band attenuation [dB]

firhilbf firhilbf_copy(firhilbf _q)

Copy object including all internal objects and state

int firhilbf_destroy(firhilbf _q)

Destroy finite impulse response Hilbert transform, freeing all internally-allocted memory and objects.

int firhilbf_print(firhilbf _q)

Print firhilb object internals to stdout

int firhilbf_reset(firhilbf _q)

Reset firhilb object internal state

int firhilbf_r2c_execute(firhilbf _q, float _x, float complex * _y)

Execute Hilbert transform (real to complex)

  • _q : Hilbert transform object
  • _x : real-valued input sample
  • _y : complex-valued output sample

int firhilbf_c2r_execute(firhilbf _q, float complex _x, float * _y0, float * _y1)

Execute Hilbert transform (complex to real)

  • _q : Hilbert transform object
  • _x : complex-valued input sample
  • _y0 : real-valued output sample, lower side-band retained
  • _y1 : real-valued output sample, upper side-band retained

int firhilbf_decim_execute(firhilbf _q, float * _x, float complex * _y)

Execute Hilbert transform decimator (real to complex)

  • _q : Hilbert transform object
  • _x : real-valued input array, shape: (2, 1)
  • _y : complex-valued output sample

int firhilbf_decim_execute_block(firhilbf _q, float * _x, unsigned int _n, float complex * _y)

Execute Hilbert transform decimator (real to complex) on a block of samples

  • _q : Hilbert transform object
  • _x : real-valued input array, shape: (2*_n, 1)
  • _n : number of output samples
  • _y : complex-valued output array, shape: (_n, 1)

int firhilbf_interp_execute(firhilbf _q, float complex _x, float * _y)

Execute Hilbert transform interpolator (real to complex)

  • _q : Hilbert transform object
  • _x : complex-valued input sample
  • _y : real-valued output array, shape: (2, 1)

int firhilbf_interp_execute_block(firhilbf _q, float complex * _x, unsigned int _n, float * _y)

Execute Hilbert transform interpolator (complex to real) on a block of samples

  • _q : Hilbert transform object
  • _x : complex-valued input array, shape: (_n, 1)
  • _n : number of *input* samples
  • _y : real-valued output array, shape: (2*_n, 1)