# Digital Filter Design

## Classes

class  gr_firdes
Finite Impulse Response (FIR) filter design functions. More...
class  gr::filter::firdes
Finite Impulse Response (FIR) filter design functions. More...

## Functions

GR_CORE_API 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.
FILTER_API std::vector< double > gr::filter::pm_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 using Remez algorithm.

## Function Documentation

 GR_CORE_API std::vector 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.
 FILTER_API std::vector gr::filter::pm_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 using Remez algorithm.

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.