Fast FFT filter with gr_complex input, gr_complex output and float taps. More...
#include <gnuradio/filter/fft_filter.h>
Public Member Functions  
fft_filter_ccf (int decimation, const std::vector< float > &taps, int nthreads=1)  
Construct an FFT filter for complex vectors with the given taps and decimation rate. More...  
fft_filter_ccf (const fft_filter_ccf &)=delete  
fft_filter_ccf &  operator= (const fft_filter_ccf &)=delete 
fft_filter_ccf (fft_filter_ccf &&)=default  
fft_filter_ccf &  operator= (fft_filter_ccf &&)=default 
int  set_taps (const std::vector< float > &taps) 
Set new taps for the filter. More...  
void  set_nthreads (int n) 
Set number of threads to use. More...  
std::vector< float >  taps () const 
Returns the taps. More...  
unsigned int  ntaps () const 
Returns the number of taps in the filter. More...  
unsigned int  filtersize () const 
Returns the actual size of the filter. More...  
int  nthreads () const 
Get number of threads being used. More...  
int  filter (int nitems, const gr_complex *input, gr_complex *output) 
Perform the filter operation. More...  
Fast FFT filter with gr_complex input, gr_complex output and float taps.
This block performs fast convolution using the overlapandsave algorithm. The filtering is performand in the frequency domain instead of the time domain (see gr::filter::kernel::fir_filter_ccf). For an input signal x and filter coefficients (taps) t, we compute y as:
This kernel computes the FFT of the taps when they are set to only perform this operation once. The FFT of the input signal x is done every time.
Because this is designed as a very lowlevel kernel operation, it is designed for speed and avoids certain checks in the filter() function itself. The filter function expects that the input signal is a multiple of d_nsamples in the class that's computed internally to be as fast as possible. The function set_taps will return the value of nsamples that can be used externally to check this boundary. Notice that all implementations of the fft_filter GNU Radio blocks (e.g., gr::filter::fft_filter_ccf) use this value of nsamples to compute the value to call gr::block::set_output_multiple that ensures the scheduler always passes this block the right number of samples.
gr::filter::kernel::fft_filter_ccf::fft_filter_ccf  (  int  decimation, 
const std::vector< float > &  taps,  
int  nthreads = 1 

) 
Construct an FFT filter for complex vectors with the given taps and decimation rate.
This is the basic implementation for performing FFT filter for fast convolution in other blocks (e.g., gr::filter::fft_filter_ccf).
decimation  The decimation rate of the filter (int) 
taps  The filter taps (float) 
nthreads  The number of threads for the FFT to use (int) 

delete 

default 
int gr::filter::kernel::fft_filter_ccf::filter  (  int  nitems, 
const gr_complex *  input,  
gr_complex *  output  
) 
Perform the filter operation.
nitems  The number of items to produce 
input  The input vector to be filtered 
output  The result of the filter operation 
unsigned int gr::filter::kernel::fft_filter_ccf::filtersize  (  )  const 
Returns the actual size of the filter.
This value could be equal to ntaps, but we often build a longer filter to allow us to calculate a more efficient FFT. This value is the actual size of the filters used in the calculation of the overlapandsave operation.
unsigned int gr::filter::kernel::fft_filter_ccf::ntaps  (  )  const 
Returns the number of taps in the filter.
int gr::filter::kernel::fft_filter_ccf::nthreads  (  )  const 
Get number of threads being used.

delete 

default 
void gr::filter::kernel::fft_filter_ccf::set_nthreads  (  int  n  ) 
Set number of threads to use.
int gr::filter::kernel::fft_filter_ccf::set_taps  (  const std::vector< float > &  taps  ) 
Set new taps for the filter.
Sets new taps and resets the class properties to handle different sizes
taps  The filter taps (complex) 
std::vector<float> gr::filter::kernel::fft_filter_ccf::taps  (  )  const 
Returns the taps.