17#ifndef R8BUTIL_INCLUDED
18#define R8BUTIL_INCLUDED
35 return( 4.34294481903251828 * log( re * re + im * im + 1e-100 ));
53 double& prevg_log,
const double prec,
const double maxstep,
54 const double minstep = 1e-11 )
56 double curg_log = 4.34294481903251828 * log( curg + 1e-100 );
57 curg_log += ( prevg_log - curg_log ) * 0.7;
59 const double slope = fabs( curg_log - prevg_log );
65 step =
max(
min( step, maxstep ), minstep );
90 const int fltlen,
double& ming,
double& minth,
const double thend )
92 const double maxstep = minth * 2e-3;
110 const double curg = re * re + im * im;
148 const int fltlen,
double& maxg,
double& maxth,
const double thend )
150 const double maxstep = maxth * 1e-4;
151 double premaxth = maxth;
152 double premaxg = maxg;
153 double postmaxth = maxth;
154 double postmaxg = maxg;
156 double prevth = maxth;
158 double curth = maxth;
165 bool WasPeak =
false;
166 int AfterPeakCount = 0;
178 const double curg = re * re + im * im;
192 if( AfterPeakCount == 0 )
198 if( AfterPeakCount == 5 )
204 for( k = 0; k < 2; k++ )
206 double l = ( k == 0 ? premaxth : maxth );
207 double curgl = ( k == 0 ? premaxg : maxg );
208 double r = ( k == 0 ? maxth : postmaxth );
209 double curgr = ( k == 0 ? maxg : postmaxg );
213 const double c = ( l + r ) * 0.5;
217 const double curg = re * re + im * im;
280 const int fltlen,
const double maxg,
double& th,
const double thend )
289 const double c = ( l + r ) * 0.5;
300 const double curg = re * re + im * im;
The "base" header file with basic classes and functions.
The "r8brain-free-src" library namespace.
Definition CDSPBlockConvolver.h:22
void findFIRFilterResponseMaxLtoR(const double *const flt, const int fltlen, double &maxg, double &maxth, const double thend)
Locates normalized frequency at which the maximal filter gain is reached.
Definition r8butil.h:147
double convertResponseToLog(const double re, const double im)
Converts complex response into magnitude in log scale.
Definition r8butil.h:33
R8B_CONST double R8B_PI
Equals pi.
Definition r8bbase.h:179
void calcFIRFilterResponse(const double *flt, int fltlen, const double th, double &re0, double &im0, const int fltlat=0)
FIR filter's frequency response calculation.
Definition r8bbase.h:819
void findFIRFilterResponseLevelRtoL(const double *const flt, const int fltlen, const double maxg, double &th, const double thend)
Locates normalized frequency at which the specified maximum filter gain is reached.
Definition r8butil.h:279
T min(const T &v1, const T &v2)
Returns minimum of two values.
Definition r8bbase.h:1079
T max(const T &v1, const T &v2)
Returns maximum of two values.
Definition r8bbase.h:1098
void updateScanStep(double &step, const double curg, double &prevg_log, const double prec, const double maxstep, const double minstep=1e-11)
An utility function that performs frequency response scanning step update based on the current magnit...
Definition r8butil.h:52
void findFIRFilterResponseMinLtoR(const double *const flt, const int fltlen, double &ming, double &minth, const double thend)
Locates normalized frequency at which the minimum filter gain is reached.
Definition r8butil.h:89