What do you think of this filter ?

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From English to

This is not a cutting edge filter, but this might be useful for analog inputs
with relatively infrequent variations.
This is perhaps a old discarded idea, but I would like to have your opinion.

low pass filter with dynamic cut frequency adjustment:

- the variable gain g0 varies between gmin and gmax depending on the rate of
  variation of the signal
- The idea is to adapt the cut frequency of the filter according to
  the slope of the input.
- the variable gain g0 is itself filtered by a low-pass filter.

double gmin=0.3;     // low cut frequency gain
double gmax=0.7;     // high cut frequency gain
double epsilon = 0.05;
double delta;

// Low pass single pole filter:
double low_pass (double n0, double n1, double g)
{
    double filt = n1 * (1.0 - g) + g * n0;
    return filt;
}

double filt_adapt(double n0, double n1, double n2)
// n0 : current signal, n1 : filtered signal at t-1, n2 filtered signal at t-2
// g0 : current gain, g1 : filtered gain at t-1
{
    double filt = low_pass(n0, n1, g0);

    if (fabs(n1-n2) < epsilon)
       delta = 1.0;
    else
       delta = fabs(n0-n1)/fabs (n1-n2);

    if (delta > 1.0)
       g0 = min(gmax,g0 + delta*0.3);
    else
       g0 = max(gmin,g0 - delta*0.3);

    g0 = low_pass(g0,g1,0.3);
    g1=g0;
    return filt;

}

Site Timeline