GNU Radio 3.6.5 C++ API

gr_pfb_synthesizer_ccf Class Reference

Polyphase synthesis filterbank with gr_complex input, gr_complex output and float taps. More...

#include <gr_pfb_synthesizer_ccf.h>

Inheritance diagram for gr_pfb_synthesizer_ccf:
gr_sync_interpolator gr_sync_block gr_block gr_basic_block gr_msg_accepter gruel::msg_accepter

List of all members.

Public Member Functions

 ~gr_pfb_synthesizer_ccf ()
void set_taps (const std::vector< float > &taps)
void print_taps ()
std::vector< std::vector< float > > taps () const
void set_channel_map (const std::vector< int > &map)
std::vector< int > channel_map () const
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_pfb_synthesizer_ccf_sptr 
gr_make_pfb_synthesizer_ccf (unsigned int numchans, const std::vector< float > &taps, bool twox)

Detailed Description

Polyphase synthesis filterbank with gr_complex input, gr_complex output and float taps.


Constructor & Destructor Documentation

gr_pfb_synthesizer_ccf::~gr_pfb_synthesizer_ccf ( )

Member Function Documentation

std::vector<int> gr_pfb_synthesizer_ccf::channel_map ( ) const

Gets the current channel map.

void gr_pfb_synthesizer_ccf::print_taps ( )

Print all of the filterbank taps to screen.

void gr_pfb_synthesizer_ccf::set_channel_map ( const std::vector< int > &  map)

Set the channel map. Channels are numbers as: N/2+1 | ... | N-1 | 0 | 1 | 2 | ... | N/2 <------------------- 0 --------------------> freq

So input stream 0 goes to channel 0, etc. Setting a new channel map allows the user to specify where in frequency he/she wants the input stream to go. This is especially useful to avoid putting signals into the channels on the edge of the spectrum which can either wrap around (in the case of odd number of channels) and be affected by filter rolloff in the transmitter.

The map must be at least the number of streams being sent to the block. Less and the algorithm will not have enough data to properly setup the buffers. Any more channels specified will be ignored.

void gr_pfb_synthesizer_ccf::set_taps ( const std::vector< float > &  taps)

Resets the filterbank's filter taps with the new prototype filter

Parameters:
taps(vector/list of floats) The prototype filter to populate the filterbank.
std::vector<std::vector<float> > gr_pfb_synthesizer_ccf::taps ( ) const

Return a vector<vector<>> of the filterbank taps

int gr_pfb_synthesizer_ccf::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.


Friends And Related Function Documentation

GR_CORE_API gr_pfb_synthesizer_ccf_sptr gr_make_pfb_synthesizer_ccf ( unsigned int  numchans,
const std::vector< float > &  taps,
bool  twox 
) [friend]

Build the polyphase synthesis filterbank.

Parameters:
numchans(unsigned integer) Specifies the number of channels M
taps(vector/list of floats) The prototype filter to populate the filterbank.
twox(bool) use 2x oversampling or not (default is no)

The documentation for this class was generated from the following file: