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

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 BANDPASS 1 |
Referenced by gr_remez().
| #define CONST const |
| #define DIFFERENTIATOR 2 |
Referenced by gr_remez().
| #define GRIDDENSITY 16 |
| #define HILBERT 3 |
Referenced by gr_remez().
| #define LOCAL_BUFFER | ( | T, | |||
| buf, | |||||
| size | ) |
Value:
std::vector<T> buf ## _vector (size); \ T *buf = &(buf ## _vector[0])
Referenced by gr_remez().
| #define MAXITERATIONS 40 |
| #define NEGATIVE 0 |
| #define Pi 3.14159265358979323846 |
| #define Pi2 (2*Pi) |
| #define POSITIVE 1 |
| 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.
| 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. |
| std::runtime_error | if args are invalid or calculation fails to converge. |
References BANDPASS, DIFFERENTIATOR, HILBERT, and LOCAL_BUFFER.
1.5.5