/*********************************************************************\
* Function:求数组平均值
* Parameters:
* input: 无
* Returns: 平均值
* Description: entertemp :作用类似于指针,指向新加入数据的下一位
* tempaddnum :十个数据的和
\********************************************************************/
int16_t filter_outputtemp(void)
{
static uint8_t entertemp = 0 ;
static int16_t TempArray[10] = 0 ;
static int16_t tempaddnum = 0 ;
int16_t returntemp = 0 ;
tempaddnum -= TempArray[entertemp] ; // 将数组中最先进入的数据从数据和中删除
tempaddnum += temp ; // 将数组中最新的数据加到数据和中
TempArray[entertemp] = temp ; // 将老的数据替换为新的数据
entertemp++ ; // 指向下一个老的数据
if(9 < entertemp) // 判断指向是否超出数组范围
{
entertemp = 0 ;
}
else
{}
returntemp = tempaddnum/10; // 计算平均值
return returntemp ;
}
/************************* End Function ******************************/
取十个数据的平均值,一个新的数据进来,需要将数组中最老的数据替换掉。函数进来后,先将最先进入数组的元素删除,再将新的数据存放到刚删除数据的位置并计算累加和,entertemp后移一位。
优点是不需要循环求和、不需要数组排序。