|
#include "filters.h"
|
#include <stdlib.h>
|
|
LPFilter_Frac* New_LP_Frac(float pre_factor)
|
{
|
LPFilter_Frac* self;
|
self = (LPFilter_Frac*)malloc(sizeof(LPFilter_Frac));
|
if(self != NULL)
|
{
|
self->pre_data = 0;
|
if(pre_factor > 0 && pre_factor < 1)
|
self->pre_factor = pre_factor;
|
else
|
free(self);
|
return self;
|
}
|
else
|
{
|
free(self);
|
return NULL;
|
}
|
}
|
|
float LP_Frac_Update(LPFilter_Frac* self, float new_data)
|
{
|
float output_data = 0;
|
output_data = self->pre_factor * self->pre_data + (1 - self->pre_factor) * new_data; //update new data
|
self->pre_data = output_data; //save data this time as the previous data for next time
|
return output_data;
|
}
|