EllAlgo 1.6.13
Loading...
Searching...
No Matches
Public Member Functions | List of all members
LowpassOracle Class Reference

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.
 

Detailed Description

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, π]

Constructor & Destructor Documentation

◆ LowpassOracle()

LowpassOracle::LowpassOracle ( size_t  N,
double  Lpsq,
double  Upsq,
double  wpass,
double  wstop 
)

Construct a new lowpass oracle object.

The constructor of the LowpassOracle class. It initializes an instance of the LowpassOracle class with the given parameters.

Parameters
[in]NNumber of FIR coefficients (including zeroth)
[in]LpsqSquare of lower passband bound (L^2)
[in]UpsqSquare of upper passband bound (U^2)
[in]wpassPassband edge frequency
[in]wstopStopband edge frequency

Member Function Documentation

◆ assess_feas()

auto LowpassOracle::assess_feas ( const Vec &  x,
const double Spsq 
) -> ParallelCut *

Assess feasibility of the given autocorrelation coefficients.

Parameters
[in]xThe autocorrelation coefficients
[in]SpsqStopband power specification
Returns
Pointer to parallel cut, or nullptr if feasible

◆ assess_optim()

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.

Parameters
[in]xThe autocorrelation coefficients
[in,out]SpsqThe stopband power (improved in place if possible)
Returns
Tuple of (parallel cut, whether Spsq was shrunk)

◆ operator()()

auto LowpassOracle::operator() ( const Vec &  x,
double Spsq 
) -> std::tuple<ParallelCut, bool>
inline

Call operator wrapping assess_optim.

Parameters
[in]xThe autocorrelation coefficients
[in,out]SpsqThe stopband power
Returns
Tuple of (parallel cut, whether Spsq was shrunk)

The documentation for this class was generated from the following file: