23 #ifndef _GRI_AGC2_CC_H_
24 #define _GRI_AGC2_CC_H_
37 gri_agc2_cc (
float attack_rate = 1e-1,
float decay_rate = 1e-2,
float reference = 1.0,
38 float gain = 1.0,
float max_gain = 0.0)
39 : _attack_rate(attack_rate), _decay_rate(decay_rate), _reference(reference),
40 _gain(gain), _max_gain(max_gain) {};
45 float gain ()
const {
return _gain; }
57 float tmp = -_reference + sqrt(output.real()*output.real() +
58 output.imag()*output.imag());
59 float rate = _decay_rate;
65 fprintf(stdout,
"rate = %f\ttmp = %f\t gain = %f\n", rate, tmp, _gain);
73 if (_max_gain > 0.0 && _gain > _max_gain)
79 for (
unsigned i = 0; i < n; i++)
80 output[i] = scale (input[i]);
void set_decay_rate(float rate)
Definition: gri_agc2_cc.h:48
high performance Automatic Gain Control class
Definition: gri_agc2_cc.h:34
void set_gain(float gain)
Definition: gri_agc2_cc.h:51
float attack_rate() const
Definition: gri_agc2_cc.h:43
gri_agc2_cc(float attack_rate=1e-1, float decay_rate=1e-2, float reference=1.0, float gain=1.0, float max_gain=0.0)
Definition: gri_agc2_cc.h:37
float gain() const
Definition: gri_agc2_cc.h:45
float _gain
Definition: gri_agc2_cc.h:87
#define GR_CORE_API
Definition: gr_core_api.h:30
std::complex< float > gr_complex
Definition: gr_complex.h:26
void set_attack_rate(float rate)
Definition: gri_agc2_cc.h:49
float _attack_rate
Definition: gri_agc2_cc.h:84
void scaleN(gr_complex output[], const gr_complex input[], unsigned n)
Definition: gri_agc2_cc.h:78
void set_max_gain(float max_gain)
Definition: gri_agc2_cc.h:52
gr_complex scale(gr_complex input)
Definition: gri_agc2_cc.h:54
float _max_gain
Definition: gri_agc2_cc.h:88
void set_reference(float reference)
Definition: gri_agc2_cc.h:50
float _reference
Definition: gri_agc2_cc.h:86
float reference() const
Definition: gri_agc2_cc.h:44
float decay_rate() const
Definition: gri_agc2_cc.h:42
float _decay_rate
Definition: gri_agc2_cc.h:85
float max_gain() const
Definition: gri_agc2_cc.h:46