用C语言写一个滤波函数
时间: 2024-10-13 19:09:51 浏览: 26
Cfitler.rar_C语言滤波_c语言 滤波_波形滤波_滤波器 c语言_滤波器c代码
在C语言中编写一个简单的滤波函数,比如常用的平均值滤波,可以用来平滑数据序列,去除噪声。这里我们创建一个基本版本,用于一维数组的滤波:
```c
#include <stdio.h>
#include <stdlib.h>
#define FILTER_SIZE 5 // 过滤窗口大小
// 滤波函数,计算并返回给定位置的平均值
double filter_average(int *input_array, int length, int position) {
if (position >= FILTER_SIZE || position + FILTER_SIZE > length) {
printf("警告: 窗口越界!\n");
return 0;
}
double sum = 0.0;
for (int i = position - FILTER_SIZE; i <= position + FILTER_SIZE; i++) {
sum += input_array[i];
}
return sum / FILTER_SIZE;
}
int main() {
int data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 测试数据
const int length = sizeof(data) / sizeof(data[0]);
// 使用滤波函数对数据进行处理
for (int i = FILTER_SIZE / 2; i < length - FILTER_SIZE / 2; i++) {
double filtered_value = filter_average(data, length, i);
printf("Position %d: Filtered value = %.2f\n", i, filtered_value);
}
return 0;
}
```
这个程序会计算每个窗口内的平均值,并打印出来。注意,为了得到连续的数据点,我们从`FILTER_SIZE / 2`开始,因为第一个和最后一个窗口可能不足整个滤波窗口大小。
阅读全文