十大滤波算法程序大全(精心整理版) 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;ivalue_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 个采样值进行算术平均运算 优点:试用于对一般具有随机干扰的信号进行滤波。这种信号的特点是 ...