GNU Radio 3.5.3.2 C++ API
gri_iir< i_type, o_type, tap_type > Class Template Reference

base class template for Infinite Impulse Response filter (IIR) More...

#include <gri_iir.h>

List of all members.

Public Member Functions

 gri_iir (const std::vector< tap_type > &fftaps, const std::vector< tap_type > &fbtaps) throw (std::invalid_argument)
 Construct an IIR with the given taps.
 gri_iir ()
 ~gri_iir ()
o_type filter (const i_type input)
 compute a single output value.
void filter_n (o_type output[], const i_type input[], long n)
 compute an array of N output values. input must have N valid entries.
unsigned ntaps_ff () const
unsigned ntaps_fb () const
void set_taps (const std::vector< tap_type > &fftaps, const std::vector< tap_type > &fbtaps) throw (std::invalid_argument)
 install new taps.

Protected Attributes

std::vector< tap_type > d_fftaps
std::vector< tap_type > d_fbtaps
int d_latest_n
int d_latest_m
std::vector< tap_type > d_prev_output
std::vector< i_type > d_prev_input

Detailed Description

template<class i_type, class o_type, class tap_type>
class gri_iir< i_type, o_type, tap_type >

base class template for Infinite Impulse Response filter (IIR)


Constructor & Destructor Documentation

template<class i_type, class o_type, class tap_type>
gri_iir< i_type, o_type, tap_type >::gri_iir ( const std::vector< tap_type > &  fftaps,
const std::vector< tap_type > &  fbtaps 
) throw (std::invalid_argument) [inline]

Construct an IIR with the given taps.

This filter uses the Direct Form I implementation, where fftaps contains the feed-forward taps, and fbtaps the feedback ones.

fftaps and fbtaps must have equal numbers of taps

The input and output satisfy a difference equation of the form

\[ y[n] - \sum_{k=1}^{M} a_k y[n-k] = \sum_{k=0}^{N} b_k x[n-k] \]

with the corresponding rational system function

\[ H(z) = \frac{\sum_{k=0}^{N} b_k z^{-k}}{1 - \sum_{k=1}^{M} a_k z^{-k}} \]

Note that some texts define the system function with a + in the denominator. If you're using that convention, you'll need to negate the feedback taps.

template<class i_type, class o_type, class tap_type>
gri_iir< i_type, o_type, tap_type >::gri_iir ( ) [inline]
template<class i_type, class o_type, class tap_type>
gri_iir< i_type, o_type, tap_type >::~gri_iir ( ) [inline]

Member Function Documentation

template<class i_type, class o_type , class tap_type >
o_type gri_iir< i_type, o_type, tap_type >::filter ( const i_type  input)

compute a single output value.

Returns:
the filtered input value.
template<class i_type, class o_type, class tap_type >
void gri_iir< i_type, o_type, tap_type >::filter_n ( o_type  output[],
const i_type  input[],
long  n 
)

compute an array of N output values. input must have N valid entries.

template<class i_type, class o_type, class tap_type>
unsigned gri_iir< i_type, o_type, tap_type >::ntaps_fb ( ) const [inline]
template<class i_type, class o_type, class tap_type>
unsigned gri_iir< i_type, o_type, tap_type >::ntaps_ff ( ) const [inline]
Returns:
number of taps in filter.
template<class i_type, class o_type, class tap_type>
void gri_iir< i_type, o_type, tap_type >::set_taps ( const std::vector< tap_type > &  fftaps,
const std::vector< tap_type > &  fbtaps 
) throw (std::invalid_argument) [inline]

install new taps.

Referenced by gri_iir< float, float, double >::gri_iir().


Member Data Documentation

template<class i_type, class o_type, class tap_type>
std::vector<tap_type> gri_iir< i_type, o_type, tap_type >::d_fbtaps [protected]
template<class i_type, class o_type, class tap_type>
std::vector<tap_type> gri_iir< i_type, o_type, tap_type >::d_fftaps [protected]
template<class i_type, class o_type, class tap_type>
int gri_iir< i_type, o_type, tap_type >::d_latest_m [protected]
template<class i_type, class o_type, class tap_type>
int gri_iir< i_type, o_type, tap_type >::d_latest_n [protected]
template<class i_type, class o_type, class tap_type>
std::vector<i_type> gri_iir< i_type, o_type, tap_type >::d_prev_input [protected]
template<class i_type, class o_type, class tap_type>
std::vector<tap_type> gri_iir< i_type, o_type, tap_type >::d_prev_output [protected]

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