Main Page | Modules | Namespace List | Class Hierarchy | Class List | File List | Class Members | File Members

gr_remez.cc File Reference

#include <gr_remez.h>
#include <cmath>
#include <assert.h>
#include <iostream>
#include <vector>

Include dependency graph for gr_remez.cc:


Defines

#define LOCAL_BUFFER(T, buf, size)
#define CONST   const
#define BANDPASS   1
#define DIFFERENTIATOR   2
#define HILBERT   3
#define NEGATIVE   0
#define POSITIVE   1
#define Pi   3.14159265358979323846
#define Pi2   (2*Pi)
#define GRIDDENSITY   16
#define MAXITERATIONS   40

Functions

std::vector< double > gr_remez (int order, const std::vector< double > &arg_bands, const std::vector< double > &arg_response, const std::vector< double > &arg_weight, const std::string filter_type, int grid_density) throw (std::runtime_error)
 Parks-McClellan FIR filter design.

Define Documentation

#define BANDPASS   1
 

#define CONST   const
 

#define DIFFERENTIATOR   2
 

#define GRIDDENSITY   16
 

#define HILBERT   3
 

#define LOCAL_BUFFER T,
buf,
size   ) 
 

Value:

std::vector<T> buf ## _vector (size); \
  T *buf = &(buf ## _vector[0])

#define MAXITERATIONS   40
 

#define NEGATIVE   0
 

#define Pi   3.14159265358979323846
 

#define Pi2   (2*Pi)
 

#define POSITIVE   1
 


Function Documentation

std::vector<double> gr_remez int  order,
const std::vector< double > &  bands,
const std::vector< double > &  ampl,
const std::vector< double > &  error_weight,
const std::string  filter_type = "bandpass",
int  grid_density = 16
throw (std::runtime_error)
 

Parks-McClellan FIR filter design.

Calculates the optimal (in the Chebyshev/minimax sense) FIR filter inpulse reponse given a set of band edges, the desired reponse on those bands, and the weight given to the error in those bands.

Parameters:
order filter order (number of taps in the returned filter - 1)
bands frequency at the band edges [ b1 e1 b2 e2 b3 e3 ...]
ampl desired amplitude at the band edges [ a(b1) a(e1) a(b2) a(e2) ...]
error_weight weighting applied to each band (usually 1)
filter_type one of "bandpass", "hilbert" or "differentiator"
grid_density determines how accurately the filter will be constructed. \ The minimum value is 16; higher values are slower to compute.
Frequency is in the range [0, 1], with 1 being the Nyquist frequency (Fs/2)

Returns:
vector of computed taps
Exceptions:
std::runtime_error if args are invalid or calculation fails to converge.


Generated on Sat Jul 8 17:08:49 2006 for GNU Radio 2.x by  doxygen 1.4.1