GNU Radio Manual and C++ API Reference  3.10.9.1
The Free & Open Software Radio Ecosystem
Digital Filter Design <br>

Classes

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

Functions

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) noexcept(false)
 Parks-McClellan FIR filter design using Remez algorithm. More...
 

Detailed Description

Function Documentation

◆ pm_remez()

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 
)
noexcept

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.

Parameters
orderfilter order (number of taps in the returned filter - 1)
bandsfrequency at the band edges [ b1 e1 b2 e2 b3 e3 ...]
ampldesired amplitude at the band edges [ a(b1) a(e1) a(b2) a(e2) ...]
error_weightweighting applied to each band (usually 1)
filter_typeone of "bandpass", "hilbert" or "differentiator"
grid_densitydetermines 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::invalid_argumentif args are invalid and std::runtime_error if calculation fails to converge.