|
GNU Radio 3.6.1 C++ API
|
IIR filter with float input, float output and double tapsThis filter uses the Direct Form I implementation, where fftaps contains the feed-forward taps, and fbtaps the feedback ones.
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 | |
Public Member Functions inherited from gr_sync_block | |
| void | forecast (int noutput_items, gr_vector_int &ninput_items_required) |
| Estimate input requirements given output request. | |
| int | general_work (int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) |
| compute output items from input items | |
| int | fixed_rate_ninput_to_noutput (int ninput) |
| Given ninput samples, return number of output samples that will be produced. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. | |
| int | fixed_rate_noutput_to_ninput (int noutput) |
| Given noutput samples, return number of input samples required to produce noutput. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. | |
Public Member Functions inherited from gr_block | |
| virtual | ~gr_block () |
| unsigned | history () const |
| void | set_history (unsigned history) |
| bool | fixed_rate () const |
| Return true if this block has a fixed input to output rate. | |
| virtual bool | start () |
| Called to enable drivers, etc for i/o devices. | |
| virtual bool | stop () |
| Called to disable drivers, etc for i/o devices. | |
| void | set_output_multiple (int multiple) |
| Constrain the noutput_items argument passed to forecast and general_work. | |
| int | output_multiple () const |
| bool | output_multiple_set () const |
| void | set_alignment (int multiple) |
| Constrains buffers to work on a set item alignment (for SIMD) | |
| int | alignment () const |
| void | set_unaligned (int na) |
| int | unaligned () const |
| void | set_is_unaligned (bool u) |
| bool | is_unaligned () const |
| void | consume (int which_input, int how_many_items) |
Tell the scheduler how_many_items of input stream which_input were consumed. | |
| void | consume_each (int how_many_items) |
Tell the scheduler how_many_items were consumed on each input stream. | |
| void | produce (int which_output, int how_many_items) |
Tell the scheduler how_many_items were produced on output stream which_output. | |
| void | set_relative_rate (double relative_rate) |
| Set the approximate output rate / input rate. | |
| double | relative_rate () const |
| return the approximate output rate / input rate | |
| uint64_t | nitems_read (unsigned int which_input) |
| Return the number of items read on input stream which_input. | |
| uint64_t | nitems_written (unsigned int which_output) |
| Return the number of items written on output stream which_output. | |
| tag_propagation_policy_t | tag_propagation_policy () |
| Asks for the policy used by the scheduler to moved tags downstream. | |
| void | set_tag_propagation_policy (tag_propagation_policy_t p) |
| Set the policy by the scheduler to determine how tags are moved downstream. | |
| gr_block_detail_sptr | detail () const |
| void | set_detail (gr_block_detail_sptr detail) |
Public Member Functions inherited from gr_basic_block | |
| virtual | ~gr_basic_block () |
| long | unique_id () const |
| std::string | name () const |
| gr_io_signature_sptr | input_signature () const |
| gr_io_signature_sptr | output_signature () const |
| gr_basic_block_sptr | to_basic_block () |
| virtual bool | check_topology (int ninputs, int noutputs) |
| Confirm that ninputs and noutputs is an acceptable combination. | |
| template<typename T > | |
| void | set_msg_handler (T msg_handler) |
| Set the callback that is fired when messages are available. | |
Public Member Functions inherited from gr_msg_accepter | |
| gr_msg_accepter () | |
| ~gr_msg_accepter () | |
| void | post (pmt::pmt_t msg) |
send msg to msg_accepter | |
Public Member Functions inherited from gruel::msg_accepter | |
| msg_accepter () | |
| virtual | ~msg_accepter () |
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) |
Additional Inherited Members | |
Protected Member Functions inherited from gr_sync_block | |
| gr_sync_block (void) | |
| gr_sync_block (const std::string &name, gr_io_signature_sptr input_signature, gr_io_signature_sptr output_signature) | |
Protected Member Functions inherited from gr_block | |
| gr_block (void) | |
| gr_block (const std::string &name, gr_io_signature_sptr input_signature, gr_io_signature_sptr output_signature) | |
| void | set_fixed_rate (bool fixed_rate) |
| void | add_item_tag (unsigned int which_output, uint64_t abs_offset, const pmt::pmt_t &key, const pmt::pmt_t &value, const pmt::pmt_t &srcid=pmt::PMT_F) |
| Adds a new tag onto the given output buffer. | |
| void | add_item_tag (unsigned int which_output, const gr_tag_t &tag) |
| Adds a new tag onto the given output buffer. | |
| void | get_tags_in_range (std::vector< gr_tag_t > &v, unsigned int which_input, uint64_t abs_start, uint64_t abs_end) |
| Given a [start,end), returns a vector of all tags in the range. | |
| void | get_tags_in_range (std::vector< gr_tag_t > &v, unsigned int which_input, uint64_t abs_start, uint64_t abs_end, const pmt::pmt_t &key) |
| Given a [start,end), returns a vector of all tags in the range with a given key. | |
Protected Member Functions inherited from gr_basic_block | |
| gr_basic_block (void) | |
| gr_basic_block (const std::string &name, gr_io_signature_sptr input_signature, gr_io_signature_sptr output_signature) | |
| Protected constructor prevents instantiation by non-derived classes. | |
| void | set_input_signature (gr_io_signature_sptr iosig) |
| may only be called during constructor | |
| void | set_output_signature (gr_io_signature_sptr iosig) |
| may only be called during constructor | |
| void | set_color (vcolor color) |
| Allow the flowgraph to set for sorting and partitioning. | |
| vcolor | color () const |
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) |
|
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.
|
friend |