请用C语言写出滑动平均滤波
时间: 2023-10-09 09:10:29 浏览: 145
c语言均值滤波源程序
5星 · 资源好评率100%
以下是C语言实现的滑动平均滤波算法:
```c
#include <stdio.h>
#define N 10 // 滤波器长度
float filter(float x);
float average(float a[], int n);
int main()
{
float x = 0, y = 0;
while (1)
{
scanf("%f", &x); // 从控制台读取输入
y = filter(x); // 滤波
printf("%f\n", y); // 输出滤波结果
}
return 0;
}
float filter(float x)
{
static float buf[N] = {0}; // 静态数组,保存最近N个输入数据
static int index = 0;
buf[index] = x; // 将新输入数据放入数组中
index = (index + 1) % N; // 更新数组下标,循环使用数组空间
return average(buf, N); // 返回平均值
}
float average(float a[], int n)
{
float sum = 0;
for (int i = 0; i < n; i++)
{
sum += a[i];
}
return sum / n;
}
```
该程序使用了一个长度为N的静态数组来保存最近N个输入数据,每次有新数据输入时,将其放入数组中,并更新数组下标,循环使用数组空间。然后计算数组中所有数据的平均值,作为滤波结果输出。
阅读全文