|
EllAlgo 1.6.13
|
Oracle for FIR lowpass filter design. More...
#include <lowpass_oracle.hpp>
Public Member Functions | |
| LowpassOracle (size_t N, double Lpsq, double Upsq, double wpass, double wstop) | |
| Construct a new lowpass oracle object. | |
| auto | assess_feas (const Vec &x, const double &Spsq) -> ParallelCut * |
| Assess feasibility of the given autocorrelation coefficients. | |
| auto | assess_optim (const Vec &x, double &Spsq) -> std::tuple< ParallelCut, bool > |
| Assess optimality of the given autocorrelation coefficients. | |
| auto | operator() (const Vec &x, double &Spsq) -> std::tuple< ParallelCut, bool > |
| Call operator wrapping assess_optim. | |
Oracle for FIR lowpass filter design.
This example is taken from Almir Mutapcic in 2006:
min γ
s.t. L²(ω) ≤ R(ω) ≤ U²(ω), ∀ ω ∈ [0, π]
R(ω) > 0, ∀ ω ∈ [0, π]
Construct a new lowpass oracle object.
The constructor of the LowpassOracle class. It initializes an instance of the LowpassOracle class with the given parameters.
| [in] | N | Number of FIR coefficients (including zeroth) |
| [in] | Lpsq | Square of lower passband bound (L^2) |
| [in] | Upsq | Square of upper passband bound (U^2) |
| [in] | wpass | Passband edge frequency |
| [in] | wstop | Stopband edge frequency |
Assess feasibility of the given autocorrelation coefficients.
| [in] | x | The autocorrelation coefficients |
| [in] | Spsq | Stopband power specification |
| auto LowpassOracle::assess_optim | ( | const Vec & | x, |
| double & | Spsq | ||
| ) | -> std::tuple< ParallelCut, bool > |
Assess optimality of the given autocorrelation coefficients.
Attempts to improve the stopband attenuation Spsq using a parallel cut. If feasible, returns the cut and a flag indicating whether Spsq was improved.
| [in] | x | The autocorrelation coefficients |
| [in,out] | Spsq | The stopband power (improved in place if possible) |
|
inline |
Call operator wrapping assess_optim.
| [in] | x | The autocorrelation coefficients |
| [in,out] | Spsq | The stopband power |