c语言 窗口滤波算法 代码
时间: 2024-12-24 12:11:49 浏览: 7
十大滤波算法程序大全C语言版
窗口滤波是一种数字信号处理技术,它通过将信号划分为固定大小的窗口并在每个窗口上应用某种滤波器来平滑或改变信号特性。在C语言中实现窗口滤波通常涉及到数组操作、循环以及数学运算,如卷积。
这里是一个简单的一维线性滑动平均滤波的窗口滤波算法示例(假设我们有一个整型数组和一个窗口大小n):
```c
#include <stdio.h>
#define WINDOW_SIZE 5
void window_filter(int *input, int *output, int length, int window_size) {
int i, j;
for (i = 0; i + window_size <= length; i++) { // 滑动窗口
int sum = 0;
for (j = 0; j < window_size; j++) {
sum += input[i + j];
}
output[i] = sum / window_size; // 平均值作为新样本
}
}
int main() {
int input[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int output[10];
window_filter(input, output, sizeof(input) / sizeof(input[0]), WINDOW_SIZE);
// 输出滤波后的结果
for (int k = 0; k < sizeof(output) / sizeof(output[0]); k++) {
printf("%d ", output[k]);
}
return 0;
}
```
在这个例子中,`window_filter`函数会将`input`数组的每个连续子数组(大小为WINDOW_SIZE)做加权平均,并将结果存储到`output`数组中。
阅读全文