GNU Radio 3.6.2 C++ API
|
Adaptive FIR filter with gr_complex input, gr_complex output and gr_complex tapsThis is a base class to implement an adaptive FIR filter. Generally, another block will inherit from this one to build a new type of adaptive filter such as an equalizer. More...
#include <adaptive_fir_ccc.h>
Public Types | |
typedef boost::shared_ptr < adaptive_fir_ccc > | sptr |
Public Member Functions | |
virtual void | set_taps (const std::vector< gr_complex > &taps)=0 |
virtual std::vector< gr_complex > | taps () const =0 |
![]() | |
unsigned | decimation () const |
void | set_decimation (unsigned decimation) |
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. | |
![]() | |
virtual int | work (int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)=0 |
just like gr_block::general_work, only this arranges to call consume_each for you | |
![]() | |
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) |
![]() | |
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. | |
![]() | |
gr_msg_accepter () | |
~gr_msg_accepter () | |
void | post (pmt::pmt_t msg) |
send msg to msg_accepter | |
![]() | |
msg_accepter () | |
virtual | ~msg_accepter () |
Static Public Member Functions | |
static sptr | make (const char *name, int decimation, const std::vector< gr_complex > &taps) |
Adaptive FIR filter with gr_complex input, gr_complex output and gr_complex taps. |
Additional Inherited Members | |
![]() | |
enum | vcolor { WHITE, GREY, BLACK } |
![]() | |
gr_sync_decimator (void) | |
gr_sync_decimator (const std::string &name, gr_io_signature_sptr input_signature, gr_io_signature_sptr output_signature, unsigned decimation) | |
![]() | |
std::string | d_name |
gr_io_signature_sptr | d_input_signature |
gr_io_signature_sptr | d_output_signature |
long | d_unique_id |
vcolor | d_color |
Adaptive FIR filter with gr_complex input, gr_complex output and gr_complex taps
This is a base class to implement an adaptive FIR filter. Generally, another block will inherit from this one to build a new type of adaptive filter such as an equalizer.
This class implements two functions that are designed to be overloaded by the child class: error(gr_complex out) and update_tap(gr_complex tap, gr_complex in).
The error() function calculates the error value that will be used to adjust the taps. The update_tap function then uses the error and the input signal value to update a particular tap. Typically, the error is calculated for a given output and then this is used in a loop to update all of the filter taps in a loop:
See digital::cma_equalizer_cc and digital::lms_dd_equalizer_cc for example usage.
|
static |
Adaptive FIR filter with gr_complex input, gr_complex output and gr_complex taps.
name | Provides a name to identify this type of algorithm |
decimation | (interger) decimation rate of the filter |
taps | (complex) filter taps |
|
pure virtual |
Implemented in gr::filter::adaptive_fir_ccc_impl.
|
pure virtual |
Implemented in gr::filter::adaptive_fir_ccc_impl.