写一个c语言数字滤波代码
时间: 2023-09-11 17:09:50 浏览: 75
以下是一个简单的数字滤波代码,使用了移动平均滤波算法:
```c
#include <stdio.h>
#define N 10 // 缓存数组大小
#define M 5 // 滤波器窗口大小
int main() {
int data[N] = {0}; // 缓存数组
int sum = 0; // 窗口内数据总和
int i, j;
// 模拟输入数据
printf("Input data:\n");
for (i = 0; i < N; i++) {
scanf("%d", &data[i]);
}
// 移动平均滤波
for (i = 0; i < N; i++) {
// 当窗口未满时,直接取平均值
if (i < M - 1) {
sum += data[i];
printf("%d ", sum / (i + 1));
}
else {
sum += data[i] - data[i - M];
printf("%d ", sum / M);
}
}
return 0;
}
```
该代码实现了一个简单的移动平均滤波算法,通过一个缓存数组来存储输入的数据,然后在每个时刻,根据窗口内的数据计算出平均值,输出滤波后的结果。在该代码中,我们使用了一个窗口大小为5的滤波器。如果窗口未满,直接取平均值;否则,每次移动窗口时,去掉最早的数据,加入最新的数据,重新计算窗口内数据的总和,然后计算平均值。
阅读全文