filter_design

# Digital Filter Design

gr::filter::firdes
FILTER_API std::vector< double > 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) pm_remez 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

Parks-McClellan FIR filter design using Remez algorithm.

Calculates the optimal (in the Chebyshev/minimax sense) FIR filter inpulse response given a set of band edges, the desired response 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.

Frequency is in the range [0, 1], with 1 being the Nyquist frequency (Fs/2)

vector of computed taps

std::invalid_argument

if args are invalid and std::runtime_error if calculation fails to converge.