C语言滤波算法怎么实现

1292
2023/12/5 22:12:03
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

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); // 滤波后的数据

以上是一个简单的移动平均滤波的实现,你可以根据需要调整窗口大小或选择其他滤波算法来实现满足具体需求的滤波功能。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: c语言println能打印啥