使用C语言写一段用滑动平均值法求平均值的代码
时间: 2023-05-24 16:04:34 浏览: 1104
以下是用滑动平均值法求平均值的C语言代码:
```
#define DATA_LENGTH 10 //数据长度
#define MOVING_AVERAGE_LENGTH 3 //滑动平均长度
void moving_average(float* data, float* result)
{
for(int i=0; i<DATA_LENGTH-MOVING_AVERAGE_LENGTH+1; i++)
{
float sum = 0;
for(int j=0; j<MOVING_AVERAGE_LENGTH; j++)
{
sum += data[i+j];
}
result[i+(MOVING_AVERAGE_LENGTH-1)/2] = sum/MOVING_AVERAGE_LENGTH;
}
//将末尾的数据直接填充到平均值数组中
for(int i=DATA_LENGTH-MOVING_AVERAGE_LENGTH+1; i<DATA_LENGTH; i++)
{
result[i] = data[i];
}
}
int main()
{
float data[DATA_LENGTH] = {1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.1, 10.2};
float result[DATA_LENGTH];
moving_average(data, result);
//输出结果
for(int i=0; i<DATA_LENGTH; i++)
{
printf("data[%d]: %.2f, result[%d]: %.2f\n", i, data[i], i, result[i]);
}
return 0;
}
```
这段代码中,首先定义了数据长度和滑动平均长度两个常量。然后编写了一个`moving_average`函数,该函数通过两层循环分别计算滑动窗口中数据的和以及平均值,并将平均值填充到平均值数组中。最后在`main`函数中调用`moving_average`函数,并输出结果。
需要注意的是,当处理末尾的几个数据时,由于滑动窗口会超出数据范围,所以直接将这几个数据填充到平均值数组中即可。
阅读全文