a

Dependencies:   mbed

LowpassFilter.h

Committer:
beacon
Date:
2017-05-22
Revision:
0:dfea4e0e064b

File content as of revision 0:dfea4e0e064b:

/*
 * LowpassFilter.h
 * Copyright (c) 2016, ZHAW
 * All rights reserved.
 */

#ifndef LOWPASS_FILTER_H_
#define LOWPASS_FILTER_H_

#include <cstdlib>
#include <cmath>

/**
 * This class implements a time-discrete 2nd order low-pass filter for a series of data values.
 * This filter can typically be used within a periodic task that takes measurements that need
 * to be filtered, like speed or position values.
 */
class LowpassFilter {
    
    public:
    
                LowpassFilter();
        virtual ~LowpassFilter();
        void    reset();
        void    reset(float value);
        void    setPeriod(float period);
        void    setFrequency(float frequency);
        float   getFrequency();
        float   filter(float value);
        
    private:
        
        float   period;
        float   frequency;
        float   a11, a12, a21, a22, b1, b2;
        float   x1, x2;
};

#endif /* LOWPASS_FILTER_H_ */