加权移动平均滤波器c语言程序
时间: 2023-09-16 15:16:22 浏览: 101
以下是一个简单的加权移动平均滤波器的C语言程序:
```
#include <stdio.h>
#define N 10 //滤波器窗口大小
int main() {
int i, j;
double data[N], weighted_sum, sum_weight, filtered_data;
//初始化滤波器窗口中的数据为0
for (i = 0; i < N; i++) {
data[i] = 0;
}
while (1) {
//输入数据
double input_data;
scanf("%lf", &input_data);
//加入新的数据
for (i = 1; i < N; i++) {
data[i - 1] = data[i];
}
data[N - 1] = input_data;
//加权求和
weighted_sum = 0.0;
sum_weight = 0.0;
for (i = 0; i < N; i++) {
weighted_sum += data[i] * (i + 1);
sum_weight += (i + 1);
}
//计算滤波结果
filtered_data = weighted_sum / sum_weight;
//输出滤波结果
printf("%lf\n", filtered_data);
}
return 0;
}
```
在这个程序中,我们定义了一个长度为N的滤波器窗口,该窗口中保存了最近N个数据。当有新的数据输入时,我们将其加入到窗口中,并利用加权求和的方法计算滤波结果。加权移动平均滤波器中,每个数据的权重是其位置在窗口中的序号加1。计算滤波结果时,我们将加权求和除以总权重即可得到滤波结果。