GNU Radio 3.7.0 C++ API
|
base class template for Infinite Impulse Response filter (IIR) More...
#include <iir_filter.h>
Public Member Functions | |
iir_filter (const std::vector< tap_type > &fftaps, const std::vector< tap_type > &fbtaps, bool oldstyle=true) throw (std::invalid_argument) | |
Construct an IIR with the given taps. | |
iir_filter () | |
~iir_filter () | |
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 | |
bool | d_oldstyle |
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 |
base class template for Infinite Impulse Response filter (IIR)
gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::iir_filter | ( | const std::vector< tap_type > & | fftaps, |
const std::vector< tap_type > & | fbtaps, | ||
bool | oldstyle = true |
||
) | 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
oldstyle:
The old style of the IIR filter uses feedback taps that are negative of what most definitions use (scipy and Matlab among them). This parameter keeps using the old GNU Radio style and is set to TRUE by default. When taps generated from scipy, Matlab, or gr_filter_design, use the new style by setting this to FALSE.
The input and output satisfy a difference equation of the form
with the corresponding rational system function
References gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::d_oldstyle, and gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::set_taps().
gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::iir_filter | ( | ) | [inline] |
gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::~iir_filter | ( | ) | [inline] |
o_type gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::filter | ( | const i_type | input | ) |
compute a single output value.
void gr::filter::kernel::iir_filter< 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.
unsigned gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::ntaps_fb | ( | ) | const [inline] |
unsigned gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::ntaps_ff | ( | ) | const [inline] |
References gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::d_fftaps.
void gr::filter::kernel::iir_filter< 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.
References gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::d_fbtaps, gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::d_fftaps, gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::d_latest_m, gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::d_latest_n, gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::d_oldstyle, gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::d_prev_input, and gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::d_prev_output.
Referenced by gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::iir_filter().
std::vector<tap_type> gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::d_fbtaps [protected] |
std::vector<tap_type> gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::d_fftaps [protected] |
int gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::d_latest_m [protected] |
int gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::d_latest_n [protected] |
bool gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::d_oldstyle [protected] |
std::vector<i_type> gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::d_prev_input [protected] |
std::vector<tap_type> gr::filter::kernel::iir_filter< i_type, o_type, tap_type >::d_prev_output [protected] |