#include <stdio.h>
#include <math.h>
#define PI 3.141592653
typedef struct LPF_define {
float Yt_Out;
float Yt_Sample_frequency;
float Yt_Cut_off_frequency;
float Yt_alpha;
}Yt_LPF_handle;
void Yt_LPF_Init(Yt_LPF_handle * pLPF ,float Sample_frequency, float Cut_off_frequency)
{
pLPF->Yt_Sample_frequency = Sample_frequency;
pLPF->Yt_Cut_off_frequency = Cut_off_frequency;
pLPF->Yt_alpha = (pLPF->Yt_Cut_off_frequency - pLPF->Yt_Cut_off_frequency / pLPF->Yt_Sample_frequency) * \
cos(2 * PI * pLPF->Yt_Cut_off_frequency / pLPF->Yt_Sample_frequency) + pLPF->Yt_Cut_off_frequency / pLPF->Yt_Sample_frequency;
pLPF->Yt_alpha = (0.5 * (1 + pLPF->Yt_alpha) - 0.5) / (0.5 * (1 - pLPF->Yt_alpha) - 0.5);
pLPF->Yt_Out = 0;
}
float Yt_LPF_Calc(Yt_LPF_handle* pLPF, float input_value)
{
pLPF->Yt_Out = pLPF->Yt_alpha * pLPF->Yt_Out + (1 - pLPF->Yt_alpha) * input_value;
return pLPF->Yt_Out;
}
int main() {
Yt_LPF_handle lpf;
Yt_LPF_Init(&lpf, 10.0, 1.0);
for (size_t i = 0; i < 10; i++)
{
Yt_LPF_Calc(&lpf, i);
printf("YT Lowpass Filter Output: %f\n", lpf.Yt_Out);
}
return 0;
}