Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of FILTER_LIB by
FILTER_LIB.h
- Committer:
- benson516
- Date:
- 2017-01-11
- Revision:
- 5:2291a3ccc64a
- Parent:
- 3:4fc5e159fdf7
- Child:
- 6:18dd3f9ac217
File content as of revision 5:2291a3ccc64a:
//
#ifndef PI
#define PI 3.1415926
#endif
//
#ifndef FILTER_LIB_H
#define FILTER_LIB_H
//
#include "IIR.h"
#include <vector>
using std::vector;
//--------------------LPF---------------------//
class LPF{ // Low-pass filter
public:
float output;
LPF(float samplingTime, float cutOff_freq_Hz_in); // cutOff_freq_Hz_in is in "Hz"
float filter(float input);
void reset(float input);
private:
float Ts;
float cutOff_freq_Hz; // Hz
float alpha_Ts;
float One_alpha_Ts;
// Flag
bool Flag_Init;
};
//--------------------LPF_vector---------------------//
class LPF_vector{ // Vectorized low-pass filter
public:
vector<float> output;
LPF_vector(size_t dimension, float samplingTime, float cutOff_freq_Hz_in); // cutOff_freq_Hz_in is in "Hz"
vector<float> filter(const vector<float> &v_in);
void reset(const vector<float> &v_in);
private:
size_t n;
float Ts;
float cutOff_freq_Hz; // Hz
float alpha_Ts;
float One_alpha_Ts;
// Flag
bool Flag_Init;
//
vector<float> zeros; // Zero vector [0;0;0]
};
//--------------------HPF---------------------//
class HPF{ // High-pass filter
public:
float output;
HPF(float samplingTime, float cutOff_freq_Hz_in); // cutOff_freq_Hz_in is in "Hz"
float filter(float input);
void reset(float input);
private:
float Ts;
float cutOff_freq_Hz; // Hz
// float alpha_Ts;
// float One_alpha_Ts;
// Flag
bool Flag_Init;
//
LPF lpf;
};
//--------------------HPF_vector---------------------//
class HPF_vector{ // Vectorized high-pass filter
public:
vector<float> output;
HPF_vector(size_t dimension, float samplingTime, float cutOff_freq_Hz_in); // cutOff_freq_Hz_in is in "Hz"
vector<float> filter(const vector<float> &v_in);
void reset(const vector<float> &v_in);
private:
size_t n;
float Ts;
float cutOff_freq_Hz; // Hz
// float alpha_Ts;
// float One_alpha_Ts;
// Flag
bool Flag_Init;
//
LPF_vector lpf_v;
};
//--------------------Derivative_appr---------------------//
class Derivative_appr{ // Approximated Derivative, cut-off at 10% of sampling frequency
public:
float output;
Derivative_appr(float samplingTime);
float filter(float input);
void reset(float input);
private:
float Ts;
float cutOff_freq_Hz; // Hz
// Flag
bool Flag_Init;
//
IIR derivative_LPF2;
};
//--------------------Rate-saturation Filter---------------------//
class RateSaturation_Filter{ // Rate-saturation Filter
public:
float output;
float error;
RateSaturation_Filter(float samplingTime, float limit_rate_in); // limit_rate is in the unit of "value/s"
float filter(float input);
void reset(float input);
private:
float Ts;
float limit_rate;
float limit_increment;
// Flag
bool Flag_Init;
};
#endif
