C语言中常见的滤波算法有移动平均滤波、中值滤波和卡尔曼滤波等。下面我给出一个移动平均滤波的实现示例。
移动平均滤波是一种简单的滤波算法,它通过计算一段时间内的数据平均值来平滑信号。
示例代码如下:
#define WINDOW_SIZE 5 // 窗口大小
float moving_average_filter(float input)
{
static float buffer[WINDOW_SIZE]; // 缓冲区
static int index = 0; // 缓冲区索引
static float sum = 0; // 缓冲区内数据的和
// 更新缓冲区
sum -= buffer[index];
buffer[index] = input;
sum += input;
// 移动索引
index++;
if (index >= WINDOW_SIZE) {
index = 0;
}
// 返回平均值
return sum / WINDOW_SIZE;
}
使用时,只需要将要滤波的数据作为参数传入该函数,即可得到滤波后的结果。
float input_data = 10.0; // 输入数据
float filtered_data = moving_average_filter(input_data); // 滤波后的数据
以上是一个简单的移动平均滤波的实现,你可以根据需要调整窗口大小或选择其他滤波算法来实现满足具体需求的滤波功能。