滑动均值滤波c语言实现代码
时间: 2024-09-30 20:11:36 浏览: 81
c代码-滑动滤波C语言实现
滑动平均滤波是一种常用的信号处理技术,用于平滑时间序列数据,减少噪声影响。在C语言中,我们可以创建一个简单的函数来实现这个过程。这里是一个基本的单变量滑动窗口平均滤波的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#define WINDOW_SIZE 5 // 设置滑动窗口大小
double sliding_average(double *input, int length, int window_size) {
double sum = 0;
for (int i = window_size - 1; i < length; i++) { // 避免数组越界
sum += input[i];
}
return sum / window_size; // 计算平均值
}
void apply_sliding_avg(double *data, int data_length, double *filtered_data) {
for (int i = 0; i < data_length; ++i) {
filtered_data[i] = sliding_average(&data[i], data_length, WINDOW_SIZE);
}
}
// 示例用法
int main() {
double input[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int len = sizeof(input) / sizeof(input[0]);
double filtered[len];
apply_sliding_avg(input, len, filtered);
printf("Filtered Data: ");
for (int i = 0; i < len; ++i) {
printf("%.1f ", filtered[i]);
}
printf("\n");
return 0;
}
```
在这个例子中,`sliding_average`函数计算了给定窗口内的输入数据的平均值,而`apply_sliding_avg`函数则遍历整个输入数组并应用滑动窗口平均滤波。注意,这只是一个基础实现,实际应用中可能需要考虑边界条件、窗口移动等细节。
阅读全文