滑动加权滤波 C代码
时间: 2024-11-12 14:17:06 浏览: 13
递推平均滤波与加权滤波_加权滤波_递推平均滤波_
5星 · 资源好评率100%
滑动加权滤波是一种数字信号处理技术,用于平滑数据序列,通过给定窗口内的数据计算出平均值或加权平均值来减少噪声的影响。以下是一个简单的滑动加权滤波的C语言实现,假设我们有一个数组`data[]`,窗口大小为`window_size`:
```c
#include <stdio.h>
#include <stdlib.h>
#define WINDOW_SIZE 5 // 可根据需求调整窗口大小
// 这里定义权重函数,通常可以是线性的或者指数衰减的
float weights[WINDOW_SIZE] = {0.2, 0.2, 0.2, 0.2, 0.2}; // 线性权重分配示例
void sliding_average(float* data, int size, float result[], int window_size) {
for (int i = 0; i <= size - window_size; ++i) {
float sum = 0;
for (int j = 0; j < window_size; ++j) {
sum += data[i + j] * weights[j];
}
result[i] = sum / window_size;
}
}
int main() {
float input_data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; // 示例数据
int input_size = sizeof(input_data) / sizeof(input_data[0]);
float filtered_data[input_size];
sliding_average(input_data, input_size, filtered_data, WINDOW_SIZE);
printf("Filtered data:\n");
for (int i = 0; i < input_size; ++i) {
printf("%.1f ", filtered_data[i]);
}
printf("\n");
return 0;
}
```
在这个例子中,`sliding_average`函数会遍历输入数据,并对每个子窗口应用加权平均算法。注意,实际应用中可以根据需要修改权重函数以适应特定的需求。
阅读全文