帮我用c语言写一个 滤波代码
时间: 2023-08-28 21:55:56 浏览: 96
当提到滤波代码时,有很多种滤波器可以实现,比如低通滤波器、高通滤波器、中值滤波器等。这里我将为您提供一个简单的移动平均滤波器的 C 代码示例,并添加相关的注释:
```c
#include <stdio.h>
#define WINDOW_SIZE 5 // 滑动窗口大小
// 移动平均滤波器函数
double movingAverageFilter(double input) {
static double window[WINDOW_SIZE]; // 静态数组作为滑动窗口
static int index = 0; // 当前索引
static double sum = 0.0; // 当前窗口内的元素和
// 减去最旧的数据
sum -= window[index];
// 添加新的数据
window[index] = input;
sum += input;
// 更新索引
index = (index + 1) % WINDOW_SIZE;
// 返回滤波后的结果
return sum / WINDOW_SIZE;
}
int main() {
double inputValues[] = {1.2, 2.5, 3.7, 4.1, 5.3, 6.8, 7.2}; // 输入值数组
int numInputs = sizeof(inputValues) / sizeof(double); // 输入值数量
printf("输入值: ");
for (int i = 0; i < numInputs; i++) {
printf("%.2f ", inputValues[i]);
}
printf("\n滤波结果: ");
for (int i = 0; i < numInputs; i++) {
double filteredValue = movingAverageFilter(inputValues[i]);
printf("%.2f ", filteredValue);
}
printf("\n");
return 0;
}
```
这个示例中使用了一个移动窗口大小为 5 的移动平均滤波器。它会不断接收输入值,并返回滤波后的结果。在主函数中,我们定义了一个输入值数组 `inputValues`,然后依次对每个输入值调用移动平均滤波器函数 `movingAverageFilter()`,并打印滤波后的结果。你可以根据需要修改滑动窗口的大小 `WINDOW_SIZE` 和输入值数组 `inputValues`。
阅读全文