数字滤波算法_第1页
数字滤波算法_第2页
数字滤波算法_第3页
数字滤波算法_第4页
数字滤波算法_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、几种简单的数字滤波假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad();1、限副滤波/* 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、中位值滤波法/

2、* N值可根据实际情况调整 排序采用冒泡法*/#define N 11char filter() char value_bufN; char count,i,j,temp; for ( count=0;count<N;count+) value_bufcount = get_ad(); delay(); for (j=0;j<N-1;j+) for (i=0;i<N-j;i+) if ( value_bufi>value_bufi+1 ) temp = value_bufi; value_bufi = value_bufi+1; value_bufi+1 = temp;

3、 return value_buf(N-1)/2; 3、算术平均滤波法/*/#define N 12char filter() int sum = 0; for ( count=0;count<N;count+) sum + = get_ad(); delay(); return (char)(sum/N);4、递推平均滤波法(又称滑动平均滤波法)/*/#define N 12 char value_bufN;char i=0;char filter() char count; int sum=0; value_bufi+ = get_ad(); if ( i = N ) i = 0;

4、for ( count=0;count<N,count+) sum = value_bufcount; return (char)(sum/N);5、中位值平均滤波法(又称防脉冲干扰平均滤波法)/*/#define N 12char filter() char count,i,j; char value_bufN; int sum=0; for (count=0;count<N;count+) value_bufcount = get_ad(); delay(); for (j=0;j<N-1;j+) for (i=0;i<N-j;i+) if ( value_bufi

5、>value_bufi+1 ) temp = value_bufi; value_bufi = value_bufi+1; value_bufi+1 = temp; for(count=1;count<N-1;count+) sum += valuecount; return (char)(sum/(N-2);6、限幅平均滤波法/*/ 略 参考子程序1、37、一阶滞后滤波法/* 为加快程序处理速度假定基数为100,a=0100 */#define a 50char value;char filter() char new_value; new_value = get_ad(); r

6、eturn (100-a)*value + a*new_value; 8、加权递推平均滤波法/* coe数组为加权系数表,存在程序存储区。*/#define N 12char code coeN = 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_bufN; int sum=0; for (count=0,count<N;count+) value_bufcount = get_ad(); delay(); for

7、(count=0,count<N;count+) sum += value_bufcount*coecount; return (char)(sum/sum_coe);9、消抖滤波法#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; *数字滤波算法 因为工程里

8、面要做个流量调节,所以打算对流量进行滤波,综合一下,考虑这么做:分两步:1、对每次测量值的过滤目的:过滤掉偶然的突变值方法:根据经验判断,确定两次采样允许的最大偏差值(设为X) 每次检测到新值时判断: 如果本次值与上次值之差<=X,则本次值有效 如果本次值与上次值之差>X,则本次值无效,放弃本次值,用上次值代替本次值 如果连续被丢弃,则应当考虑为有效值2、综合过滤目的:抑制周期性干扰方法:把连续取N个采样值看成一个队列 队列的长度固定为N 每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则) 把队列中的N个数据进行算术平均运算,就可获得新的滤波结果 “如果连续被

9、丢弃,则应当考虑为有效值”是自己考虑再三加上得,其他都是抄袭以下算法滴,哈哈:从网上收集了各类滤波算法:1、限幅滤波法(又称程序判断滤波法) A、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时判断: 如果本次值与上次值之差<=A,则本次值有效 如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值 B、优点: 能有效克服因偶然因素引起的脉冲干扰 C、缺点 无法抑制那种周期性的干扰 平滑度差 2、中位值滤波法 A、方法: 连续采样N次(N取奇数) 把N次采样值按大小排列 取中间值为本次有效值 B、优点: 能有效克服因偶然因素引起的波动

10、干扰 对温度、液位的变化缓慢的被测参数有良好的滤波效果 C、缺点: 对流量、速度等快速变化的参数不宜 3、算术平均滤波法 A、方法: 连续取N个采样值进行算术平均运算 N值较大时:信号平滑度较高,但灵敏度较低 N值较小时:信号平滑度较低,但灵敏度较高 N值的选取:一般流量,N=12;压力:N=4 B、优点: 适用于对一般具有随机干扰的信号进行滤波 这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动 C、缺点: 对于测量速度较慢或要求数据计算速度较快的实时控制不适用 比较浪费RAM 4、递推平均滤波法(又称滑动平均滤波法) A、方法: 把连续取N个采样值看成一个队列 队列的长度固定为N

11、 每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则) 把队列中的N个数据进行算术平均运算,就可获得新的滤波结果 N值的选取:流量,N=12;压力:N=4;液面,N=412;温度,N=14 B、优点: 对周期性干扰有良好的抑制作用,平滑度高 适用于高频振荡的系统 C、缺点: 灵敏度低 对偶然出现的脉冲性干扰的抑制作用较差 不易消除由于脉冲干扰所引起的采样值偏差 不适用于脉冲干扰比较严重的场合 比较浪费RAM 5、中位值平均滤波法(又称防脉冲干扰平均滤波法) A、方法: 相当于“中位值滤波法”+“算术平均滤波法” 连续采样N个数据,去掉一个最大值和一个最小值 然后计算N-2个

12、数据的算术平均值 N值的选取:314 B、优点: 融合了两种滤波法的优点 对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差 C、缺点: 测量速度较慢,和算术平均滤波法一样 比较浪费RAM 6、限幅平均滤波法 A、方法: 相当于“限幅滤波法”+“递推平均滤波法” 每次采样到的新数据先进行限幅处理, 再送入队列进行递推平均滤波处理 B、优点: 融合了两种滤波法的优点 对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差 C、缺点: 比较浪费RAM 7、一阶滞后滤波法 A、方法: 取a=01 本次滤波结果=(1-a)*本次采样值+a*上次滤波结果 B、优点: 对周期性干扰具有

13、良好的抑制作用 适用于波动频率较高的场合 C、缺点: 相位滞后,灵敏度低 滞后程度取决于a值大小 不能消除滤波频率高于采样频率的1/2的干扰信号 8、加权递推平均滤波法 A、方法: 是对递推平均滤波法的改进,即不同时刻的数据加以不同的权 通常是,越接近现时刻的数据,权取得越大。 给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低 B、优点: 适用于有较大纯滞后时间常数的对象 和采样周期较短的系统 C、缺点: 对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号 不能迅速反应系统当前所受干扰的严重程度,滤波效果差 9、消抖滤波法 A、方法: 设置一个滤波计数器 将每次采样值与当前有效值比较

14、: 如果采样值当前有效值,则计数器清零 如果采样值<>当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出) 如果计数器溢出,则将本次值替换当前有效值,并清计数器 B、优点: 对于变化缓慢的被测参数有较好的滤波效果, 可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动 C、缺点: 对于快速变化的参数不宜 如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导入系统 10、限幅消抖滤波法 A、方法: 相当于“限幅滤波法”+“消抖滤波法” 先限幅,后消抖 B、优点: 继承了“限幅”和“消抖”的优点 改进了“消抖滤波法”中的某些缺陷,避免将干扰值导入

15、系统 C、缺点:*微机控制系统的数字滤波算法    摘  要:分析了采用数字滤波消除随机干扰的优点,详细论述了微机控制系统中常用的8种数字滤波算法,并讨论了各种数字滤波算法的适用范围。    关键词:数字滤波;控制系统;随机干扰;数字滤波算法1 引言  在微机控制系统的模拟输入信号中,一般均含有各种噪声和干扰,他们来自被测信号源本身、传感器、外界干扰等。为了进行准确测量和控制,必须消除被测信号中的噪声和干扰。噪声有2大类:一类为周期性的,其典型代表为50 Hz的工频干扰,对于这类信号,采用积分时间等于20 ms整倍

16、数的双积分A/D转换器,可有效地消除其影响;另一类为非周期的不规则随机信号,对于随机干扰,可以用数字滤波方法予以削弱或滤除。所谓数字滤波,就是通过一定的计算或判断程序减少干扰信号在有用信号中的比重,因此他实际上是一个程序滤波。  数字滤波器克服了模拟滤波器的许多不足,他与模拟滤波器相比有以下优点:  (1)数字滤波器是用软件实现的,不需要增加硬设备,因而可靠性高、稳定性好,不存在阻抗匹配问题。  (2)模拟滤波器通常是各通道专用,而数字滤波器则可多通道共享,从而降低了成本。  (3)数字滤波器可以对频率很低(如0.01 Hz)的信号进行滤波,而模拟滤波器

17、由于受电容容量的限制,频率不可能太低。    (4)数字滤波器可以根据信号的不同,采用不同的滤波方法或滤波参数,具有灵活、方便、功能强的特点。2 常用数字滤波算法  数字滤波器是将一组输入数字序列进行一定的运算而转换成另一组输出数字序列的装置。设数字滤波器的输入为X(n),输出为Y(n),则输入序列和输出序列之间的关系可用差分方程式表示为:其中:输入信号X(n)可以是模拟信号经采样和A/D变换后得到的数字序列,也可以是计算机的输出信号。具有上述关系的数字滤波器的当前输出与现在的和过去的输入、过去的输出有关。由这样的差分方程式组成的滤波器称为递归型数字滤波

18、器。如果将上述差分方程式中bK取0,则可得:  说明输出只和现在的输入和过去的输入有关。这种类型的滤波器称为非递归型数字滤波器。  参数aK、bK的选择不同,可以实现低通、高通、带通、带阻等不同的数字滤波器。2.1 算术平均值滤波  算术平均值滤波是要寻找一个Y,使该值与各采样值X(K)(K=1N)之间误差的平方和为最小,即:这时,可满足式(3)。式(4)便是算术平均值滤波的算法。  设第二次测量的测量值包含信号成分Si和噪声成分Ci,则进行N次测量的信号成分之和为:    噪声的强度是用均方根来衡量的,当噪声为随机信号时,

19、进行N次测量的噪声强度之和为:式(5)和式(6)中,S、C分别表示进行N次测量后信号和噪声的平均幅度。  这样对N次测量进行算术平均后的信噪比为:其中,SC是求算术平均值前的信噪比。因此采用算术平均值后,使信噪比提高了倍。  算术平均值法适用于对一般具有随机干扰的信号进行滤波,这种信号的特点是有一个平均值,信号在某一数值范围附近作上下波动,此时仅取一个采样值作依据显然是不准确的,如压力、流量、液平面等信号的测量。但对脉冲性干扰的平滑作用尚不理想,因此他不适用于脉冲性干扰比较严重的场合。由式(7)可知,算术平均值法对信号的平滑滤波程度完全取决于N。当N较大时,平滑度高,但灵敏

20、度低,即外界信号的变化对测量计算结果Y的影响小;当N较小时,平滑度低,但灵敏度高。应视具体情况选取N,以便既少占用计算时间,又达到最好的效果,如对一般流量测量,可取N=816,对压力等测量,可取N=4。2.2 加权平均值滤波  算术平均值法对每次采样值给出相同的加权系数,即1N。但有些场合为了改进滤波效果,提高系统对当前所受干扰的灵敏度,需要增加新采样值在平均值中的比重,即将各采样值取不同的比例,然后再相加,此方法称为加权平均值法。一个N项加权平均式为:    常数C1,C2,CN的选取是多种多样的,其中常用的是加权系数法,即:  加权平均值法

21、适用于系统纯滞后时间常数较大、采样周期较短的过程,他给不同的相对采样时间得到的采样值以不同的权系数,以便能迅速反应系统当前所受干扰的严重程度。但采用加权平均值法需要测试不同过程的纯滞后时间,同时要不断计算各权系数,增加了计算量,降低了控制速度,因而他的实际应用不如算术平均值法广泛。2.3 滑动平均值滤波  以上平均滤波算法有一个共同点,即每计算1次有效采样值必须连续采样N次。对于采样速度较慢或要求数据计算速率较高的实时系统,这些方法是无法使用的。例如AD数据,数据采样速率为每秒10次,而要求每秒输入4次数据时,则N不能大于2。滑动平均值法只采样1次,将本次采样值和以前的N1次采样值一

22、起求平均,得到当前的有效采样值。  滑动平均值法把N个采样数据看成一个队列,对列的长度固定为N,每进行一次新的采样,把采样结果放入队尾,而扔掉原来队首的一个数据,这样在队列中始终有N个“最新”的数据。计算滤波值时,只要把队列中的N个数据进行平均,就可得到新的滤波值。  滑动平均值法对周期性干扰有良好的抑制作用,平滑度高,灵敏度低;但对偶然出现的脉冲性干扰的抑制作用差,不易消除由于脉冲干扰引起的采样值的偏差。因此他不适用于脉冲干扰比较严重的场合,而适用于高频振荡系统。通过观察不同N值下滑动平均的输出响应来选取N值,以便既少占用时间,又能达到最好的滤波效果。其工程经验值为:流量

23、N取12,压力N取4,液面N取412,温度N取14。2.4 中值滤波  中值滤波是对某一被测参数连续采样N次(一般N取奇数),然后把N次采样值从小到大,或从大到小排队,再取其中间值作为本次采样值。  中值滤波对于去掉偶然因素引起的波动或采样器不稳定而造成的误差所引起的脉冲干扰比较有效,对温度、液位等变化缓慢的被测参数采用此法能收到良好的滤波效果,但对流量、速度等快速变化的参数一般不易采用。2.5 防脉冲干扰平均值滤波  在脉冲干扰比较严重的场合,若采用一般的平均值法,则干扰将“平均”到计算结果中去,故平均值法不易消除由于脉冲干扰而引起的采样值偏差。防脉冲干扰平均值

24、法先对N个数据进行比较,去掉其中的最大值和最小值,然后计算余下的N-2个数据的算术平均值。即:  在实际应用中,N可取任何值,但为了加快测量计算速度,N一般不能太大,常取为4,即为四取二再取平均值法。他具有计算方便、速度快、存储量小等特点,故得到了广泛应用。2.6 程序判断滤波  工程实践表明,许多物理量的变化都需要一定的时间,相邻两次采样值之间的变化有一定的限度。程序判断滤波就是根据实践经验确定出相邻两次采样信号之间可能出现的最大偏差Y,若超出此偏差值,则表明该输入信号是干扰信号,应该去掉;若小于此偏差值,可将信号作为本次采样值。  当采样信号由于随机干扰,如大

25、功率用电设备的启动或停止,造成电流的尖峰干扰或误检测,以及变送器不稳定而引起的严重失真等,可采用程序判断法进行滤波。  程序判断滤波根据滤波方法的不同,可分为限幅滤波和限速滤波2种。2.6.1  限幅滤波  限幅滤波把两次相邻的采样值相减,求出其增量(以绝对值表示),然后与两次采样允许的最大差值(由被控对象的实际情况决定)Y进行比较,若小于或等于Y,则取本次采样值;若大于Y,则仍取上次采样值作为本次采样值。即:    限幅滤波主要用于变化比较缓慢的参数,如温度、物理位置等测量系统。具体应用时,关键的问题是最大允差Y的选取,Y太大,各种干扰信号将“乘虚而入”,使系统误差增大;Y太小,又会使某些有用信号被“拒之门外”,使计算机采样效率变低。因此,门限值Y的选取是非常重要的。通常可根据经验数据获得,必要时也可由实验得出。2.6.2 限速滤波  限速滤波最多可用3次采样值来决定采样结果,设顺序采样时刻t1,t2,t3的采样值分别为Y(1),Y(2),Y(3),则  限速滤波较为折中,既照顾了采样的实时性,又顾及了采样值变化的连续性。但这种方法也有明显的缺点:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论