常用数字滤波算法及其应用
2017-05-30胡超然徐枫陈永胜
胡超然 徐枫 陈永胜
摘要::数字滤波具有精度高、可编程、可移植、可复用、便于集成等优点,而被广泛应用于各种数字设备。本文主要利用信号的随机特性,考虑信号本身以及噪声并进行统计,并估算逼近出信号本身。从本质上讲数字滤波技术,其实就是多种数字算法技术的应用。本文以C语言为编程媒介,介绍几种常用的数字滤波技术。
关键词:算法;滤波;实用;信号
1 限幅滤波算法
1.1 限幅滤波算法原理及其应用
限幅滤波算法是将最近相邻两次采集到的数据求差,并求其绝对值。并与系统两次采样最大允许的差值进行比较,若小于等于系统最大允许差值,则认为此次采样有效,否则认为本次采样无效,系统将上次采样的数据作为本次的采样数据。
由于限幅滤波的这种特性,限幅滤波一般被用于一些被测物理量变化相对缓慢的系统,比如温度、湿度、位移等。当然要取得较好的滤波效果,必须根据实际的物理对象,设定合适的系统最大允许差值。
1.2 限幅滤波算法的代码实现
若定义当前采集数据为DataCurrent,上次采样数据为DataLast,系统最大允许差值为Value_D,滤波后的数据为Data那么限幅滤波的核心C代码可以这么写:
If((DataCurrentDataLast)>Value_D||(DataLastDataCurrent)>Value_D)Data=DataLast;
elseData=DataCurrent;
return Data;
2 算术平均滤波算法
2.1 算术平均滤波算法原理及其应用
算术平均滤波的算法比较简单,就是系统采样多组数据,求其平均数即可。
系统采用算术滤波算法后,系统的信噪比将提高N倍。算术平均滤波算法,适用于被测信号在一定时间内,采样数据在某个数据范围内上下浮动的物理量。比如液位、压力、流量等物理量。需要注意的是采用这种算法时应根据实际情况选取合适的N,否则若N数值较大时系统平滑度变高,但灵敏度变低,即外界物理量实际的变化,对于我们通过算法得出的数据影响较小;若N的数值较小时,平滑度变低。
2.2 算术平均滤波算法的代码实现
若定义当前一组数据的和为DataSum,系统数据为Data,get_data为采样函数,定义滤波后的数据为Data,N为采样次数.那么算术平均滤波算法的核心C代码可以这么写:
for(i=0;iData=DataSum/N;
returnData;
3 加权平均滤波算法
3.1 加权平均滤波算法原理及其应用
加权平均滤波算法是系统连续N次采样,并对每次采样乘以加权系数,最后求和。
加权平均滤波算法能够快速反映系统当前所受干扰的严重程度,但由于这种方法需要处理器不断计算各权系数,增加了计算量,降低了控制速度,因此这种算法一般应用于纯滞后且时间常数T较大、采用周期过程较短的系统。
3.2 加权平均滤波算法的代码实现
定义系统采样缓存为DataBuff[N];定义采样次数N;定义采样函数get_data;定义加权系数数组为DataParameter[N]={0.1,0.15,0.2,0.25,0.3}这里注意各权值相加为1,定义滤波后数据为Data需要注意的是在使用这种算法时要根据实际情况选择合适的N以及分配好每次采样相对应的权值。加权平均滤波法的核心代码为:
for(count=0;count