经典滤波器介绍

  • 1、限幅滤波法(又称程序判断滤波法)
  • 2、中位值滤波法
  • 3、算术平均滤波法
  • 4、递推平均滤波法(又称滑动平均滤波法)
  • 5、中位值平均滤波法(又称防脉冲干扰平均滤波法)
  • 6、限幅平均滤波法
  • 7、一阶滞后滤波法
  • 8、加权递推平均滤波法
  • 9、消抖滤波法
  • 10、限幅消抖滤波法
  • 11、IIR 数字滤波器

1、限幅滤波法(又称程序判断滤波法)

A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为A)每次检测到新值时判断:如果本次值与上次值之差<=A,则本次值有效如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值
B、优点:能有效克服因偶然因素引起的脉冲干扰
C、缺点无法抑制那种周期性的干扰平滑度差
/*  A值可根据实际情况调整value为有效值,new_value为当前采样值  滤波程序返回有效的实际值  */#define A 10char value;char filter()
{char  new_value;new_value = get_ad();if ( ( new_value - value > A ) || ( value - new_value > A )){return value;}return new_value;
}

2、中位值滤波法

A、方法:连续采样N次(N取奇数)把N次采样值按大小排列取中间值为本次有效值
B、优点:能有效克服因偶然因素引起的波动干扰对温度、液位的变化缓慢的被测参数有良好的滤波效果
C、缺点:对流量、速度等快速变化的参数不宜
/*  N值可根据实际情况调整排序采用冒泡法*/#define N  11char filter()
{char value_buf[N];char count,i,j,temp;for ( count=0;count<N;COUNT++){value_buf[count] = get_ad();delay();}for (j=0;j<N-1;J++){for (i=0;i<N-J;I++){if ( value_buf>value_buf[i+1] ){temp = value_buf;value_buf = value_buf[i+1]; value_buf[i+1] = temp;}}}return value_buf[(N-1)/2];
}

3、算术平均滤波法

A、方法:连续取N个采样值进行算术平均运算N值较大时:信号平滑度较高,但灵敏度较低N值较小时:信号平滑度较低,但灵敏度较高N值的选取:一般流量,N=12;压力:N=4
B、优点:适用于对一般具有随机干扰的信号进行滤波这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动
C、缺点:对于测量速度较慢或要求数据计算速度较快的实时控制不适用比较浪费RAM
#define N 12char filter()
{int  sum = 0;for ( count=0;count<N;COUNT++){sum + = get_ad();delay();}return (char)(sum/N);
}

4、递推平均滤波法(又称滑动平均滤波法)

 A、方法:把连续取N个采样值看成一个队列队列的长度固定为N每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则)把队列中的N个数据进行算术平均运算,就可获得新的滤波结果N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4
B、优点:对周期性干扰有良好的抑制作用,平滑度高适用于高频振荡的系统
C、缺点:灵敏度低对偶然出现的脉冲性干扰的抑制作用较差不易消除由于脉冲干扰所引起的采样值偏差不适用于脉冲干扰比较严重的场合比较浪费RAM
#define N 12 char value_buf[N];
char i=0;char filter()
{char count;int  sum=0;value_buf[i++] = get_ad();if ( i == N )   {  i = 0;}for ( count=0;count<N,COUNT++){sum = value_buf[count];}return (char)(sum/N);
}

5、中位值平均滤波法(又称防脉冲干扰平均滤波法)

A、方法:相当于“中位值滤波法”+“算术平均滤波法”连续采样N个数据,去掉一个最大值和一个最小值然后计算N-2个数据的算术平均值N值的选取:3~14
B、优点:融合了两种滤波法的优点对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差
C、缺点:测量速度较慢,和算术平均滤波法一样比较浪费RAM
#define N 12char filter()
{char count,i,j;char value_buf[N];int  sum=0;for  (count=0;count<N;COUNT++){value_buf[count] = get_ad();delay();}for (j=0;j<N-1;J++){for (i=0;i<N-J;I++){if ( value_buf>value_buf[i+1] ){temp = value_buf;value_buf = value_buf[i+1]; value_buf[i+1] = temp;}}}for(count=1;count<N-1;COUNT++){sum += value[count];} return (char)(sum/(N-2));
}

6、限幅平均滤波法

A、方法:相当于“限幅滤波法”+“递推平均滤波法”每次采样到的新数据先进行限幅处理,再送入队列进行递推平均滤波处理
B、优点:融合了两种滤波法的优点对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差
C、缺点:比较浪费RAM

7、一阶滞后滤波法

A、方法:取a=0~1本次滤波结果=(1-a)*本次采样值+a*上次滤波结果
B、优点:对周期性干扰具有良好的抑制作用适用于波动频率较高的场合
C、缺点:相位滞后,灵敏度低滞后程度取决于a值大小不能消除滤波频率高于采样频率的1/2的干扰信号
/* 为加快程序处理速度假定基数为100,a=0~100 */#define a 50char value;char filter()
{char  new_value;new_value = get_ad();return (100-a)*value + a*new_value;
}

8、加权递推平均滤波法

A、方法:是对递推平均滤波法的改进,即不同时刻的数据加以不同的权通常是,越接近现时刻的数据,权取得越大。给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低
B、优点:适用于有较大纯滞后时间常数的对象和采样周期较短的系统
C、缺点:对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号不能迅速反应系统当前所受干扰的严重程度,滤波效果差
/* coe数组为加权系数表,存在程序存储区。*/#define N 12char code coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12};
char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;char filter()
{char count;char value_buf[N];int  sum=0;for (count=0,count<N;COUNT++){value_buf[count] = get_ad();delay();}for (count=0,count<N;COUNT++){sum += value_buf[count]*coe[count];}return (char)(sum/sum_coe);
}

9、消抖滤波法

A、方法:设置一个滤波计数器将每次采样值与当前有效值比较:如果采样值=当前有效值,则计数器清零如果采样值<>当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出)如果计数器溢出,则将本次值替换当前有效值,并清计数器
B、优点:对于变化缓慢的被测参数有较好的滤波效果,可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动
C、缺点:对于快速变化的参数不宜如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导入系统
#define N 12char filter()
{char count=0;char new_value;new_value = get_ad();while (value !=new_value);{count++;if (count>=N)  {return new_value;}delay();new_value = get_ad();}return value;
}

10、限幅消抖滤波法

A、方法:相当于“限幅滤波法”+“消抖滤波法”先限幅,后消抖
B、优点:继承了“限幅”和“消抖”的优点改进了“消抖滤波法”中的某些缺陷,避免将干扰值导入系统
C、缺点:对于快速变化的参数不宜

11、IIR 数字滤波器

A. 方法:确定信号带宽, 滤之。Y(n) = a1*Y(n-1) + a2*Y(n-2) + ... + ak*Y(n-k) + b0*X(n) + b1*X(n-1) + b2*X(n-2) + ... + bk*X(n-k)
B. 优点:高通,低通,带通,带阻任意。设计简单(用matlab)
C. 缺点:运算量大。
int  BandpassFilter4(int InputAD4)
{int  ReturnValue; int  ii;RESLO=0;RESHI=0;MACS=*PdelIn;OP2=1068; //FilterCoeff4[4];MACS=*(PdelIn+1);OP2=8;    //FilterCoeff4[3];MACS=*(PdelIn+2);OP2=-2001;//FilterCoeff4[2];MACS=*(PdelIn+3);OP2=8;    //FilterCoeff4[1];MACS=InputAD4;OP2=1068; //FilterCoeff4[0];MACS=*PdelOu;OP2=-7190;//FilterCoeff4[8];MACS=*(PdelOu+1);OP2=-1973; //FilterCoeff4[7];MACS=*(PdelOu+2);OP2=-19578;//FilterCoeff4[6];MACS=*(PdelOu+3);OP2=-3047; //FilterCoeff4[5];*p=RESLO;*(p+1)=RESHI;mytestmul<<=2;ReturnValue=*(p+1);for(ii=0;ii<3;ii++){DelayInput[ii]=DelayInput[ii+1];DelayOutput[ii]=DelayOutput[ii+1];} DelayInput[3]=InputAD4;DelayOutput[3]=ReturnValue;//  if (ReturnValue<0)//  {//  ReturnValue=-ReturnValue;//  }return ReturnValue;
}

自动驾驶算法-滤波器系列(六)——10+种经典滤波算法相关推荐

  1. 自动驾驶采标系列六:复杂场景语义理解-交通识别检测技术

        标注猿的第57篇原创        一个用数据视角看AI世界的标注猿   前几篇文章从两种数据的角度去学习了基于图片和激光雷达数据的算法,较为通俗的说明了其算法的逻辑,从而为理解其标注数据在使 ...

  2. 算法大总结之----10大经典排序算法(从小到大排列)

    目录 1. 冒泡排序 1.1. 算法讲解 1.2. 代码实现 2. 选择排序 2.1. 算法讲解 2.2. 代码实现 3 插入排序 2.1. 算法讲解 2.2. 代码实现 4 希尔排序 2.1. 算法 ...

  3. c语言常用滤波算法,10种常用滤波算法C实现.c

    /* 10种简单的数字滤波C语言源程序算法 假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad(); 1.限副滤波 */ /*  A值可根据实际情况调整 val ...

  4. 10种经典机器学习算法——Python版

    klearn python API LinearRegression from sklearn.linear_model import LinearRegression # 线性回归 # module ...

  5. 自动驾驶采标系列七:复杂场景语义理解-可行驶区域检测

        标注猿的第58篇原创        一个用数据视角看AI世界的标注猿   本篇文章我们继续学习自动驾驶采标系列的算法基础理论,关于复杂场景语义理解中的可行驶区域检测部分. 车辆可行驶区域包括结 ...

  6. 自动驾驶采标系列三:基于图像的目标检测技术

        标注猿的第54篇原创        一个用数据视角看AI世界的标注猿    上一篇文章我们从"环境感知"数据的采集设备上进行了详细说明,已经了解了相应设备采集的数据及采集前 ...

  7. 【自动驾驶传感器融合系列】02自动驾驶中的多传感器同步理论

    [自动驾驶传感器融合系列]02自动驾驶中的多传感器同步理论 文前白话 1.传感器时空同步概念 2.传感器时间同步 · 时间硬同步 · 时间软同步 3.传感器时空同步 文前白话 同步理论整体架构: 1. ...

  8. 自动驾驶采标系列二:车载感知与车载传感器标定

    上一篇文章对自动驾驶采标问题中的一系列法律问题进行了浅析,接下来自动驾驶采标系列里面会对自动驾驶相关技术和知识点进行进一步梳理,来帮助小伙伴深入的了解自动驾驶的架构逻辑与数据采标工作的关系. 上文中提 ...

  9. 自动驾驶采标系列四:基于激光雷达的目标检测方法

        标注猿的第55篇原创        一个用数据视角看AI世界的标注猿   上一篇文章我们讲了基于图像的目标检测技术,但对于标注人员来说这部分内容就相对比较难一些,只是作为一个了解就可以,但是如 ...

最新文章

  1. 445port入侵具体解释
  2. HDU1598最小生成树+贪心处理
  3. 用Python进行SQLite数据库操作
  4. python画图视频_如何在视频文件的第一帧上画图,然后继续显示整个视频
  5. 远程办公招聘_招聘远程人才时要寻找的5种技能
  6. 凸包 poj 1113
  7. Spring-beans-FactoryBean
  8. h5 html被缓存,【Web前端问题】html5离线缓存,不能被缓存问题
  9. 云客Drupal源码分析之插件系统(中)
  10. ipad wifi信号测试软件,iPad3的wifi信号弱 二种方法修复WiFi信号
  11. STM32硬件编程_学习思路
  12. 【XA.DAY.4】网络安全体系与模型
  13. 华人的旗帜——首位亚裔图灵奖获得者姚期智
  14. 深度学习中Batch size对训练效果的影响
  15. 2016 年度开源中国新增开源软件排行榜 TOP 100
  16. acrobat给pdf加多行水印_PDF加水印的各种方法
  17. 化学机械抛光材料去除机理
  18. cct考试模拟试题c语言,计算机一级(CCT)考试模拟题
  19. 关于光缆,你想知道的都在这里
  20. netty-socketio -夜幕思年华

热门文章

  1. BEST定理:有向图欧拉回路个数(bzoj 3659: Which Dreamed It)
  2. bzoj 4417: [Shoi2013]超级跳马(矩阵合并+快速幂)
  3. paper reading:高光谱遥感影像空谱特征提取与分类方法研究 - 康旭东
  4. pod配置Liveness和Readiness探针
  5. js系列教程6-BOM操作全解
  6. markdown与latex:书写单边大括号左边或右边即在没有括号的一端加点
  7. java 耦合解耦_为什么工厂模式可以解耦?why?
  8. mysql数据库连接数瓶颈_MySQL数据库性能优化之硬件瓶颈分析
  9. byte[] 转成 bitmap
  10. 数据驱动和关键字驱动