求平均值的方法很多,将所有的和相加除以個數就是平均值了。還有去最大和最小值在求平均值的方法也是不少,下面就是我覺得不錯的一種,将其記錄起來:
這種辦法是将說有的資料全部排列起來,去掉頭和尾巴,再求平均值。
#define buf_size 8 //設定緩沖區的大小
unsigned char data_buf[buf_size];//定義緩沖區
void array_up(unsigned char *pos,unsigned char num)
{
unsigned char i,j;
unsigned int pos_temp;
for(i=0; i<(num-1); i++)
{
for(j=i+1; j<num; j++)
{
if(pos[j]<pos[i])
{
pos_temp = pos[j];
pos[j] = pos[i];
pos[i] = pos_temp;
}
}
}
}
unsigned char average_value(unsigned char data)
{
unsigned char i;
unsigned int point;
data_ buf[7]= data; //将最大值和最小值改為輸入值
data_uf[0] = data;
array_up(data_buf,buf_size); //數組排序
//*****除去最大兩個數和最小兩個數取平均值**************
point = data_buf[2];
for(i=3; i< (buf_size - 2) ; i++)
point = point + data_buf[i];
point=point /(buf_size-4);
return (unsigned char)point;
//******************************************************
}