一阶低通滤波示例程序

📅 2026/6/26 2:37:45
一阶低通滤波示例程序
#include stdio.h // 一阶低通滤波宏 // alpha滤波系数0~1 // input本次采样输入 // prev_out存储上次滤波结果的float变量指针 #define LOW_PASS_FILTER_RET(alpha, input, prev_out) \ (*(prev_out) *(prev_out) (alpha) * ((input) - *(prev_out))) // 一阶低通滤波函数 // alpha: 滤波系数 (0.0 ~ 1.0) // input: 当前输入值 // prev_output: 上一次的输出值 (传入指针以便更新) float lowPassFilter(float alpha, float input, float *prev_output) { // 等效公式: Y(n) Y(n-1) alpha * (X(n) - Y(n-1)) float output *prev_output alpha * (input - *prev_output); *prev_output output; return output; } int main() { float alpha 0.628f; // 较小的值滤波平滑但响应稍慢 float prev 0.0f; float raw_data[] {2000, 5800, 2100, 1900, 2070, 2380}; // 模拟含噪声的数据 for (int i 0; i 6; i) { float filtered LOW_PASS_FILTER_RET(alpha, raw_data[i], prev); printf(Raw: %.2f, Filtered: %.2f\n, raw_data[i], filtered); } return 0; }