用c写一个低通滑动平均滤波程序
时间: 2023-10-30 08:05:03 浏览: 70
以下是一个用C语言实现的低通滑动平均滤波程序:
```c
#include <stdio.h>
#define N 10 // 滤波器长度
float lowpass_filter(float input);
float buffer[N]; // 缓存数组
int ptr = 0; // 缓存指针
int main() {
float input, output;
printf("请输入一个浮点数:\n");
scanf("%f", &input);
output = lowpass_filter(input);
printf("滤波后的输出:%f\n", output);
return 0;
}
// 低通滑动平均滤波函数
float lowpass_filter(float input) {
int i;
float sum = 0.0;
buffer[ptr++] = input;
if (ptr >= N) {
ptr = 0;
}
for (i = 0; i < N; i++) {
sum += buffer[i];
}
return sum / N;
}
```
程序中定义了一个长度为N的缓存数组,用来存储最近N个输入数据。每次输入一个新的数据时,将其存入缓存数组的末尾,并将缓存指针往后移动一位。若缓存指针超过了数组末尾,则将其重置为0,从数组头开始存储数据。
在滤波函数中,遍历缓存数组,将其中的元素求和,最后再除以N,得到滤波后的输出数据。由于缓存数组中存储的是最近N个输入数据,因此这个求和操作实际上就是在对这N个数据进行平均运算,从而实现了滑动平均滤波的效果。
阅读全文