GNU Radio 3.6.5 C++ API
|
IIR filter with float input, float output and double taps. More...
#include <gr_iir_filter_ffd.h>
Public Member Functions | |
~gr_iir_filter_ffd () | |
void | set_taps (const std::vector< double > &fftaps, const std::vector< double > &fbtaps) throw (std::invalid_argument) |
int | work (int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) |
just like gr_block::general_work, only this arranges to call consume_each for you | |
Friends | |
GR_CORE_API gr_iir_filter_ffd_sptr | gr_make_iir_filter_ffd (const std::vector< double > &fftaps, const std::vector< double > &fbtaps) throw (std::invalid_argument) |
IIR filter with float input, float output and double taps.
This filter uses the Direct Form I implementation, where fftaps
contains the feed-forward taps, and fbtaps
the feedback ones.
The input and output satisfy a difference equation of the form \f{ y[n] - \sum_{k=1}^{M} a_k y[n-k] = \sum_{k=0}^{N} b_k x[n-k] \f}
with the corresponding rational system function \f{ H(z) = \ frac{\sum_{k=0}^{M} b_k z^{-k}}{1 - \sum_{k=1}^{N} a_k z^{-k}} \f}
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.
gr_iir_filter_ffd::~gr_iir_filter_ffd | ( | ) |
void gr_iir_filter_ffd::set_taps | ( | const std::vector< double > & | fftaps, |
const std::vector< double > & | fbtaps | ||
) | throw (std::invalid_argument) |
int gr_iir_filter_ffd::work | ( | int | noutput_items, |
gr_vector_const_void_star & | input_items, | ||
gr_vector_void_star & | output_items | ||
) | [virtual] |
just like gr_block::general_work, only this arranges to call consume_each for you
The user must override work to define the signal processing code
Implements gr_sync_block.
GR_CORE_API gr_iir_filter_ffd_sptr gr_make_iir_filter_ffd | ( | const std::vector< double > & | fftaps, |
const std::vector< double > & | fbtaps | ||
) | throw (std::invalid_argument) [friend] |