This class efficiently combines a frequency translation (typically "down conversion") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a "channel selection filter" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. More...
#include <gr_freq_xlating_fir_filter_fcf.h>
Public Member Functions | |
virtual | ~gr_freq_xlating_fir_filter_fcf () |
void | set_center_freq (double center_freq) |
void | set_taps (const std::vector< float > &taps) |
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 | |
Protected Member Functions | |
virtual void | build_composite_fir () |
gr_freq_xlating_fir_filter_fcf (int decimation, const std::vector< float > &taps, double center_freq, double sampling_freq) | |
Protected Attributes | |
std::vector< float > | d_proto_taps |
gr_fir_fcc * | d_composite_fir |
gr_rotator | d_r |
double | d_center_freq |
double | d_sampling_freq |
bool | d_updated |
Friends | |
gr_freq_xlating_fir_filter_fcf_sptr | gr_make_freq_xlating_fir_filter_fcf (int decimation, const std::vector< float > &taps, double center_freq, double sampling_freq) |
This class efficiently combines a frequency translation (typically "down conversion") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a "channel selection filter" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input.
Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored.
gr_freq_xlating_fir_filter_fcf::~gr_freq_xlating_fir_filter_fcf | ( | ) | [virtual] |
References d_composite_fir.
gr_freq_xlating_fir_filter_fcf::gr_freq_xlating_fir_filter_fcf | ( | int | decimation, | |
const std::vector< float > & | taps, | |||
double | center_freq, | |||
double | sampling_freq | |||
) | [protected] |
Construct a FIR filter with the given taps and a composite frequency translation that shifts center_freq down to zero Hz. The frequency translation logically comes before the filtering operation.
References build_composite_fir(), gr_fir_util::create_gr_fir_fcc(), d_composite_fir, d_proto_taps, and gr_block::set_history().
void gr_freq_xlating_fir_filter_fcf::build_composite_fir | ( | ) | [protected, virtual] |
References d_center_freq, d_composite_fir, d_proto_taps, d_r, d_sampling_freq, gr_sync_decimator::decimation(), gr_reverse(), gr_rotator::set_phase_incr(), and gr_fir_fcc::set_taps().
Referenced by gr_freq_xlating_fir_filter_fcf(), and work().
void gr_freq_xlating_fir_filter_fcf::set_center_freq | ( | double | center_freq | ) |
References d_center_freq, and d_updated.
void gr_freq_xlating_fir_filter_fcf::set_taps | ( | const std::vector< float > & | taps | ) |
References d_proto_taps, and d_updated.
int gr_freq_xlating_fir_filter_fcf::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.
References build_composite_fir(), d_composite_fir, d_proto_taps, d_r, d_updated, gr_sync_decimator::decimation(), gr_fir_fcc::filter(), gr_rotator::rotate(), and gr_block::set_history().
gr_freq_xlating_fir_filter_fcf_sptr gr_make_freq_xlating_fir_filter_fcf | ( | int | decimation, | |
const std::vector< float > & | taps, | |||
double | center_freq, | |||
double | sampling_freq | |||
) | [friend] |
Construct a FIR filter with the given taps and a composite frequency translation that shifts center_freq down to zero Hz. The frequency translation logically comes before the filtering operation.
double gr_freq_xlating_fir_filter_fcf::d_center_freq [protected] |
Referenced by build_composite_fir(), and set_center_freq().
Referenced by build_composite_fir(), gr_freq_xlating_fir_filter_fcf(), work(), and ~gr_freq_xlating_fir_filter_fcf().
std::vector<float> gr_freq_xlating_fir_filter_fcf::d_proto_taps [protected] |
Referenced by build_composite_fir(), gr_freq_xlating_fir_filter_fcf(), set_taps(), and work().
gr_rotator gr_freq_xlating_fir_filter_fcf::d_r [protected] |
Referenced by build_composite_fir(), and work().
double gr_freq_xlating_fir_filter_fcf::d_sampling_freq [protected] |
Referenced by build_composite_fir().
bool gr_freq_xlating_fir_filter_fcf::d_updated [protected] |
Referenced by set_center_freq(), set_taps(), and work().