文档详情

十大滤波算法..doc

发布:2017-01-10约6.77千字共9页下载文档
文本预览下载声明
十大滤波算法程序大全(精心整理版)1、限幅滤波法*函数名称:AmplitudeLimiterFilter()-限幅滤波法 *优点:能有效克服因偶然因素引起的脉冲干扰 *缺点:无法抑制那种周期性的干扰,且平滑度差 *说明: ? 1、调用函数 ???? GetAD(),该函数用来取得当前值 ? 2、变量说明 ???? Value:最近一次有效采样的值,该变量为全局变量 ???? NewValue:当前采样的值 ???? ReturnValue:返回值 ? 3、常量说明 ???? A:两次采样的最大误差值,该值需要使用者根据实际情况设置 *入口:Value,上一次有效的采样值,在主程序里赋值 *出口:ReturnValue,返回值,本次滤波结果 ****************************************************/ #define? A?? 10 unsigned char Value unsigned char AmplitudeLimiterFilter() { ?? unsigned char NewValue; ?? unsigned char ReturnValue; ?? NewValue=GatAD(); ?? if(((NewValue-Value)A))||((Value-NewValue)A))) ?? ReturnValue=Value; ?? else ReturnValue=NewValue; ?? return(ReturnValue); } 2、中位值滤波法 /**************************************************** *函数名称:MiddlevalueFilter()-中位值滤波法 *优点:能有效克服因偶然因素引起的波动干扰;对温度、液 ?????? 位等变化缓慢的被测参数有良好的滤波效果 *缺点:对流量,速度等快速变化的参数不宜 *说明: ? 1、调用函数 ???? GetAD(),该函数用来取得当前值 ???? Delay(),基本延时函数 ? 2、变量说明 ???? ArrDataBuffer[N]:用来存放一次性采集的N组数据 ???? Temp:完成冒泡法试用的临时寄存器 ???? i,j,k:循环试用的参数值 ? 3、常量说明 ???? N:数组长度 *入口: *出口:value_buf[(N-1)/2],返回值,本次滤波结果 *****************************************************/ #define N 11 unsigned char MiddlevalueFilter() { ? unsigned char value_buf[N]; ? unsigned char i,j,k,temp; ? for(i=0;iN;i++) ? { ??? value_buf[i] = get_ad(); ??? delay(); ? } ? for (j=0;jN-1;j++) ? { ?? for (k=0;kN-j;k++) ?? { ??? if(value_buf[k]value_buf[k+1]) ???? { ?????? temp = value_buf[k]; ?????? value_buf[k] = value_buf[k+1]; ?????? value_buf[k+1] = temp; ???? } ?? } ? } ? return value_buf[(N-1)/2]; } 3、算术平均滤波法 /********************************************************* 说明:连续取N个采样值进行算术平均运算 优点:试用于对一般具有随机干扰的信号进行滤波。这种信号的特点是 ????? 有一个平均值,信号在某一数值范围附近上下波动。 缺点:对于测量速度较慢或要求数据计算较快的实时控制不适用。 **********************************************************/ #define N 12 char filter() { ? unsigned int sum = 0; ? unsigned char i; ? for (i=0;iN;i++) ? { ??? sum + = get_ad(); ??? delay(); ? } ? return(char)(sum/N); } 4、递推平均滤波法(又称滑动平均滤波法) /*************************************************** 说明:把连续N个采样值看成一
显示全部
相似文档