原创 一种适用的滤波算法(转)

2011-2-11 17:02 1412 7 7 分类: MCU/ 嵌入式
//--------------------------------------------------------
//单字节递推中位值平均滤波
//功能: 1.将新采样值压入队列
// 2.将队列中数据减去最大值和最小值,然后求平均值(小数四舍五入)
//入口: NEW_DATA =新采样值
// QUEUE  =队列
// n  =队列长度
//出口:   =滤波结果(平均值)
//--------------------------------------------------------
tU08 filter1(tU08 NEW_DATA,tU08 QUEUE[],tU08 n) {
 tU08 max;
 tU08 min;
 tU16 sum;
 tU08 i;
 
 QUEUE[0]=NEW_DATA;     //新采样值入队列
 max=QUEUE[0];
 min=QUEUE[0];
 sum=QUEUE[0];

 for(i=n-1;i!=0;i--)
 {
  if ( QUEUE > max ) max = QUEUE;  //比较并更新最大值
  else if ( QUEUE < min ) min = QUEUE; //比较并更新最小值

  sum = sum + QUEUE;    //追加到和值
  QUEUE = QUEUE[i-1];    //队列更新

 }
        i = n - 2; 
        sum = sum - max - min + i/2;
        sum = sum / i;                           //平均值=(和值-最大值-最小值+n/2)/(队列长度-2)
        //说明:+(n-2)/2的目的是为了四舍五入
 return ((tU08) sum)  ;
 

/////////////////////////////////////////版权所有:程序匠人/////////////////////////////////////////////////

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条