数字滤波_数字滤波器 - CSDN
精华内容
参与话题
  • 数字滤波算法

    千次阅读 2014-11-17 10:17:57
    为消除或减弱外界干扰,提高系统的测量精度和可靠性,通过软件滤波的方法即数字滤波算法对测量数据进行处理。 数字滤波方法有很多种,每种方法有其不同的特点和使用范围。从大的范围可分为3类。 1、克服大脉冲...

            在仪表自动化工作中,经常需要对大量的数据进行处理,这些数据往往是一个时间序列或空间序列,这时常会用到数字滤波技术对数据进行预处理。数字滤波是指利用数学的方法对原始数据进行处理,去掉原始数据中掺杂的噪声数据,获得最具有代表性的数据集合。数据采样是一种通过间接方法取得事物状态的技术,如将事物的温度、压力、流量等属性通过一定的转换技术将其转换为电信号,然后再将电信号转换为数字化的数据。在多次转换中由于转换技术客观原因或主观原因造成采样数据中掺杂少量的噪声数据,影响了最终数据的准确性。为了防止噪声对数据结果的影响,除了采用更加科学的采样技术外,我们还要采用一些必要的技术手段对原始数据进行整理、统计,数字滤波技术是最基本的处理方法,它可以剔除数据中的噪声,提高数据的代表性。       

    为消除或减弱外界干扰,提高系统的测量精度和可靠性,通过软件滤波的方法即数字滤波算法对测量数据进行处理。 数字滤波方法有很多种,每种方法有其不同的特点和使用范围。从大的范围可分为3类。  

    1、克服大脉冲干扰的数字滤波法

    (1)限幅滤波法

    (2)中值滤波法

    2、抑制小幅度高频噪声的平均滤波法

    (1)算数平均

    (2)滑动平均

    (3)加权滑动平均

    (4)一阶滞后滤波法

     3、复合滤波法

    (1)中位值平均滤波法

    (2)限幅平均滤波法


    (一)克服大脉冲干扰的数字滤波法

        克服由仪器外部环境偶然因素引起的突变性扰动或仪器内部不稳定引起误码等造成的尖脉冲干扰,是仪器数据处理的第一步。通常采用简单的非线性滤波法。

    1、限幅滤波法

            限幅滤波是通过程序判断被测信号的变化幅度,从而消除缓变信号中的尖脉冲干扰。

    A 方法: 根据经验判断,确定两次采样允许的最大偏差值(设为δ)每次检测到新值时判断:如果本次值与上次值之差大于δ,则本次值无效,放弃本次值,用上次值代替本次值;

    B 优点:能有效克服因偶然因素引起的脉冲干扰;

    C 缺点:无法抑制那种周期性的干扰 平滑度差;

    D 适用范围:变化比较缓慢的被测量值。

    #define A 10
    char value;
    char filter(int value)
    {
       char new_value;
       new_value = get_ad();
       if(( new_value - value > δ)||( value - new_value >δ)
          return value;
       return new_value;
    }

    2、中值滤波法

        中位值滤波是一种典型的非线性滤波器,它运算简单,在滤除脉冲噪声的同时可以很好地保护信号的细节信息。

    A 方法:连续采样N次(N取奇数) 把N次采样值按大小排列(多采用冒泡法)取中间值为本次有效值;

    B 优点:能有效克服因偶然因素引起的波动(脉冲)干扰;

    C 缺点:对流量、速度等快速变化的参数不宜;

    D 适用范围:对温度、液位的变化缓慢的被测参数有良好的滤波效果。

    #define N 11
    
    char 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];
    }


    (二)抑制小幅度高频噪声的平均滤波法

       小幅度高频电子噪声:电子器件热噪声、A/D量化噪声等。通常采用具有低通特性的线性滤波器:算数平均滤波法、加权平均滤波法、滑动加权平均滤波法一阶滞后滤波法等。

     1、算术平均滤波法

        算术平均滤波法是对N个连续采样值相加,然后取其算术平均值作为本次测量的滤波值。

    A 方法:连续取N个采样值进行算术平均运算N值较大时:信号平滑度较高,但灵敏度较低N值较小时:信号平滑度较低,但灵敏度较高 N值的选取:一般流量,N=12;压力:N=4;

    B 优点:对滤除混杂在被测信号上的随机干扰信号非常有效。被测信号的特点是有一个平均值,信号在某一数值范围附近上下波动;

    C 缺点:不易消除脉冲干扰引起的误差。对于采样速度较慢或要求数据更新率较高的实时系统,算术平均滤法无法使用的。

    #define N 12
    char filter()
    {
    	int sum = 0;
    	for( count=0;count<N;count++)
      {
        sum + = get_ad();
        delay();
      }
    return (char)(sum/N);
    }


    2、递推平均滤波法

        又称滑动平均滤波法,对于采样速度较慢或要求数据更新率较高的实时系统,算术平均滤波法无法使用的。滑动平均滤波法把N个测量数据看成一个队列,队列的长度固定为N,每进行一次新的采样,把测量结果放入队尾,而去掉原来队首的一个数据,这样在队列中始终有N个“最新”的数据。

    A 方法:把连续取N个采样值看成一个队列,队列的长度固定N,每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进 先出原则) 把队列中的N个数据进行算术平均运算,就可获得新的滤波结果N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4;

    B 优点:对周期性干扰有良好的抑制作用,平滑度高 适用于高频振荡的系统;

    C 缺点:灵敏度低,对偶然出现的脉冲性干扰的抑制作用较差不易消除由于脉冲干扰所引起的采样值偏差 不适用于脉冲干扰比较严重的场合。

    #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);
    }
    

    3、加权递推平均滤波法

    A 方法:是对递推平均滤波法的改进,即不同时刻的数据加以不同的权通常是,越接近现时刻的数据,权取得越大。给予新采样值的权系数越大,则灵敏度越高,但信号平滑度低;

    B 优点:适用于有较大纯滞后时间常数的对象 和采样周期较短的系统;

    C 缺点:对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号 不能迅速反应系统当前所受干扰的严重程度,滤波效果差。

    #define N 12
    char 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);
    }
    

    4、一阶滞后滤波法

        一阶低通数字滤波器是用软件的方法实现硬件的RC滤波,以抑制干扰信号。在模拟量输入通道中,常用一阶滞后RC模拟滤波器来抑制干扰。用此种方法来实现对低频干扰时,首先遇到的问题是要求滤波器有大的时间常数(时间常数=RC)和高精度的RC网络。时间常数越大,要求RC值越大,其漏电流也必然增大,从而使RC网络精度下降。采用一阶滞后的数字滤波方法,能很好的克服这种模拟量滤波器的缺点,在滤波常数要求较大的场合,此法更适合。

    A 方法: a = T f /( T f +T) T f 为滤波时间常数。T为采样周期,本次滤波结果=(1-a)* 本次采样值+a * 上次滤波结果;

    B 优点: 对周期性干扰具有良好的抑制作用 适用于波动频率较高的场合;

    C 缺点: 相位滞后,灵敏度低 滞后程度取决于a值大小 不能消除滤波频率高于采样频率的1/2的干扰信号。

    #define a 50
    char value;
    char filter()
    {
       char  new_value;
       new_value = get_ad();
       return (1-a)*value + a*new_value;  //a为滤波系数, 其值<<1
    }
    


    (三)复合滤波法

       在实际应用中,有时既要消除大幅度的脉冲干扰,有要做到数据平滑。因此常把前面介绍的两种以上的方法结合起来使用,形成复合滤波。去极值平均滤波算法:先用中值滤波算法滤除采样值中的脉冲性干扰,然后把剩余的各采样值进行平均滤波。连续采样N次,剔除其最大值和最小值,再求余下N-2个采样的平均值。显然,这种方法既能抑制随机干扰,又能滤除明显的脉冲干扰。

    1、中位值平均滤波法

        又称防脉冲干扰平均滤法,中位值平均滤波法相当于“中位值滤波法”+“算术平均滤波法”

    A 方法: 连续采样N个数据,去掉一个最大值和一个最小值 然后计算N-2个数据的算术平均值N值的选取:3~14;

    B 优点: 融合了两种滤波法的优点这种方法既能抑制随机干扰,又能滤除明显的脉冲干扰;

    C 缺点:测量速度较慢,和算术平均滤波法一样,数据量较大,比较浪费RAM。

    2、限幅平均滤波法

        在脉冲干扰较严重的场合,如采用一般的平均值法,则干扰会平均到结果中去。限幅平均滤波法相当于“限幅滤波法”+“递推平均滤波法”

    A 方法: 每次采样到的新数据先进行限幅处理,再送入队列进行递推平均滤波处理;

    B 优点: 融合了两种滤波法的优点, 对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差;

    C 缺点:数据量较大,比较浪费RAM;

    D 适用范围: 缓变信号。

    展开全文
  • 10种简单的数字滤波算法
  • 数字滤波器的设计

    万次阅读 2018-03-10 14:48:30
    数字滤波一般分为时域滤波和频域滤波。频域滤波是将时域变换到频域,对相应频率做调整,然后反变换到时域,抛开FFT的话过程相对简单。在这里我们主要说时域滤波。时域滤波器分为无限脉冲响应IIR和有限脉冲响应FIR两...

    数字滤波一般分为时域滤波和频域滤波。频域滤波是将时域变换到频域,对相应频率做调整,然后反变换到时域,抛开FFT的话过程相对简单。在这里我们主要说时域滤波。

    时域滤波器分为无限脉冲响应IIR和有限脉冲响应FIR两种。IIR滤波器的优点是可以用较低的阶数(相比同样指标的FIR滤波器)实现滤波器。缺点一:不是线性相位,只能用于对相位信息不敏感的信号(如音频信号)。缺点二:有可能是不稳定的。在设计的过程中为了保持稳定性和因果性,要求z变换所有的极点都必须位于单位圆内。但即使是这样,也可能由于量化舍入等因素引起的误差最终导致IIR滤波器不稳定。FIR滤波器的优点是可以设计成具有线性相位的,并且是稳定的(FIR滤波器除原点处外没有极点),缺点是阶数高,也就是说计算量大。

    IIR滤波器设计:

    IIR滤波器最终具有如下形式:


    FIR滤波器最终为:


    IIR滤波器的设计主要是将已经比较成熟的连续时间滤波器(如巴特沃兹滤波器,切比雪夫滤波器,椭圆滤波器)变换成满足指标的离散时间滤波器。主要方法使脉冲响应不变法双线性变换法

    脉冲响应不变法:

    脉冲响应不变法的核心思想是:让离散时间滤波器的脉冲响应和已有的连续时间滤波器的脉冲响应保持“相等”。这里当然不可能相等,可以理解为,离散时间滤波器的脉冲响应是对连续时间滤波器脉冲响应的“采样”。

    设计过程如下:

    1,确定离散时间滤波器的技术指标。主要是通带截止频率,阻带截止频率,通带增益范围,阻带增益范围。下图摘自奥本海姆的《离散时间信号处理》。

      所以离散时间滤波器的技术的要求为:

      

      

    2,将离散时间滤波器所要求的技术指标转换成连续时间滤波器对应的指标。

    因为离散时间脉冲响应是连续时间脉冲响应的等间隔采样,所以离散时间滤波器与连续时间滤波器的脉冲响应有如下关系:

                         

    Td是离散时间脉冲响应对连续时间脉冲响应的采样间隔,在实际中会被消掉,计算的时候可以取便于计算的值,比如1。注意到等式右边乘了Td,是为了保持两者在频域的幅度一致。

    于是,两者的频率响应关系如下:

                    

    如果连续时间滤波器是带限的,并且满足:  对于

     那么就有:

                       

    比较可以看出。 如果领Td=1,则

    于是根据这个对应关系以及离散时间技术指标的两个不等式可以计算出连续时间的技术指标:



    3,选择连续时间滤波器,并按照2中的指标计算出连续时间滤波器的参数。

       以巴特沃兹滤波器为例:

       


    这里需要确定两个参数,一个是N, 一个是。这两个参数可以由2中的不等式取边际值变成等式方程组求出。

    4, 得到了N和, 连续时间滤波器就确定了,可以在S平面确定出极点的位置。为了保证稳定性,需要取S平面虚轴左面的N个极点。由这些极点,可以得到Hc(s)的表达式(拉普拉斯变换)。

    对于连续时间滤波器的系统函数,其对应的脉冲响应不变式的离散时间系统函数为: 


    于是,既然我们已经得到了H(s),就可以得到相应的离散时间滤波器的系统函数H(z),进而得到时域的表达式。

    至此,IIR滤波器通过脉冲响应不变法设计完毕!

    在设计过程中发现有一点是要求连续时间滤波器是带限的,这就是说,连续时间滤波器只能是低通或带通,那么脉冲响应不变法就不适用于设计高通或带阻的滤波器!而且,实际中连续时间低通滤波器也不是完全带限的,不过如果在高频部分趋于0,那么混叠就很小,在设计滤波器时,可以在满足通带指标的同时,适当超过阻带指标来做一些补偿。


    双线性变换法:

    双线性变换的核心思想是:确定一种s和z的代数变换,用这种变换将s平面映射到z平面。设计过程如下:

    1, 确定离散时间滤波器的技术指标。这一步和脉冲响应不变法相同。

    2,将离散时间滤波器所要求的技术指标转换成连续时间滤波器对应的指标。

         这一步和脉冲响应不变法不同的是,在脉冲响应不变法中,有。而对于双线性变换法,映射关系是:

          , 也即 


         上面的公式来源于
                     ,       
         具体的公式推导这里就不详细写了,重点就是Ω和ω的对应关系和脉冲响应不变法时不同了。
         接下来就可以按照这一对应关系,由1中ω的截止频率和频率响应的幅度的不等式,得到Ω对应的截止频率和不同频率响应的幅度的不等式,从而确定了连续时间滤波器的技术指标。
    3, 选择连续时间滤波器,并按照2中的指标计算出连续时间滤波器的参数。这一步和脉冲响应不变式相同。
    4, 根据N和,确定连续时间滤波器,得到H(s),这一步也和脉冲响应不变式相同。
    5, 根据H(s),得到H(z)。

         这一步需要将带入H(s),从而得到H(z)。这一步完成了双线性变换法从S平面到Z平面的映射。

    6, 根据H(z)得到形如的时域表达式。
    以下是三种用双线性变换法得到低通滤波器H(z)的零极点图,摘自奥本海姆的《离散时间信号处理》


        
    脉冲响应不变法的要求对应的连续时间滤波器必须是带限的。(否则会出现混叠)

    双线性变换法的要求对应的连续时间滤波器必须具有分段恒定的幅度响应。因为其频率映射(连续时间频率到离散时间频率)是非线性的,引入了频率轴的非线性畸变。


    FIR滤波器设计

    FIR滤波器的设计方法主要是窗函数法。

    所谓窗函数法,是说,假定有一个理想滤波器,那么它在时域具有非因果并且无限长的脉冲响应,为了在实际中应用,需要对该理想滤波器的脉冲响应h[n]加窗截断,来得到因果的并且有限长的脉冲响应。

    因为时域加窗后频域也会相应改变,理想滤波器就变成了“非理想”滤波器。于是问题就变成了寻找一个合适的窗,使这个加窗截断后的“非理想”滤波器满足技术指标。

    下图摘自奥本海姆的《离散时间信号处理》


    为了满足FIR滤波器的因果性和线性相位,窗函数应该满足:

                  

    也就是w[n]是对于点M/2对称的。

    通常所用的窗函数有:矩形窗,汉宁窗,海明窗,布莱克曼窗,凯撒窗等。

    因为凯撒窗的形状可以根据参数调节,所以对于频域指标有明确限制时会选择凯撒窗,通过频域指标来确定凯撒窗的参数。

    凯撒窗定义为:


    式中α=M/2, 为第一类零阶修正贝塞尔函数。

    所以凯撒窗也有两个参数:M和β。

    设计过程:

    1, 确定离散时间滤波器的技术指标。上图中的δ和通带截止频率,以及阻带截止频率

    2,定义为过渡区的宽度。并定义 用来计算β

        


        于是对于给定的δ就可计算出参数β。

    3,参数M可以通过以下公式计算出:

        

         至此,凯撒窗的参数就完全确定了。

    4,窗函数w[n]已经确定。如果理想滤波器的脉冲响应是h[n],那么对应的FIR滤波器就是h[n]w[n]。

    设计FIR高通滤波器:

    如果已有了FIR低通滤波器,很容易就可以设计出相反的高通滤波器。

    理想高通滤波器(广义线性相位)频响为:


    可以看出, ,于是高通滤波器的时域表示为:


    而且可以通过这种方式得到多通带多阻带的滤波器。

    展开全文
  • 常用数字滤波算法总结

    千次阅读 2019-04-11 19:15:13
    常用数字滤波算法总结 在单片机进行数据采集时,会遇到数据的随机误差,随机误差是由随机干扰引起的,其特点是在相同条件下测量同一量时,其大小和符号会现无规则的变化而无法预测,但多次测量的结果符合统计规律。...

    常用数字滤波算法总结

    在单片机进行数据采集时,会遇到数据的随机误差,随机误差是由随机干扰引起的,其特点是在相同条件下测量同一量时,其大小和符号会现无规则的变化而无法预测,但多次测量的结果符合统计规律。为克服随机干扰引起的误差,硬件上可采用滤波技术,软件上可采用软件算法实现数字滤波。滤波算法往往是系统测控算法的一个重要组成部分,实时性很强。

    采用数字滤波算法克服随机干扰的误差具有以下优点:

    1、数字滤波无需其他的硬件成本,只用一个计算过程,可靠性高,不存在阻抗匹配问题。尤其是数字滤波可以对频率很低的信号进行滤波,这是模拟滤波器做不到的。

    2、数字滤波使用软件算法实现,多输入通道可共用一个滤波程序,降低系统开支。

    3、只要适当改变滤波器的滤波程序或运算,就能方便地改变其滤波特性,这对于滤除低频干扰和随机信号会有较大的效果。

    4、在单片机系统中常用的滤波算法有限幅滤波法、中值滤波法、算术平均滤波法、加权平均滤波法、滑动平均滤波等。

    (1)限幅滤波算法

    该运算的过程中将两次相邻的采样相减,求出其增量,然后将增量的绝对值,与两次采样允许的最大差值A进行比较。A的大小由被测对象的具体情况而定,如果小于或等于允许的最大差值,则本次采样有效;否则取上次采样值作为本次数据的样本。

    算法的程序代码如下:

    #defineA //允许的最大差值

    chardata; //上一次的数据

    char filter()

    {

    chardatanew; //新数据变量

    datanew=get_data(); //获得新数据变量

    if((datanew-data)>A||(data-datanew>A))

    return data;

    else

    returndatanew;

    }

    说明:限幅滤波法主要用于处理变化较为缓慢的数据,如温度、物体的位置等。使用时,关键要选取合适的门限制A。通常这可由经验数据获得,必要时可通过实验得到。

    (2)中值滤波算法

    该运算的过程是对某一参数连续采样N次(N一般为奇数),然后把N次采样的值按从小到大排列,再取中间值作为本次采样值,整个过程实际上是一个序列排序的过程。

    算法的程序代码如下:

    #define N11 //定义获得的数据个数

    char filter()

    {

    charvalue_buff[N]; //定义存储数据的数组

    char count,i,j,temp;

    for(count=0;count

    {

    value_buf[count]=get_data();

    delay(); //如果采集数据比较慢,那么就需要延时或中断

    }

    for(j=0;j

    {

    for(value_buff[i]>value_buff[i+1]

    {

    temp=value_buff[i];

    value_buff[i]=value_buff[i+1];

    value_buff[i+1]=temp;

    }

    }

    returnvalue_buff[(N-1)/2];

    }

    说明:中值滤波比较适用于去掉由偶然因素引起的波动和采样器不稳定而引起的脉动干扰。若被测量值变化比较慢,采用中值滤波法效果会比较好,但如果数据变化比较快,则不宜采用此方法。

    (3)算术平均滤波算法

    该算法的基本原理很简单,就是连续取N次采样值后进行算术平均。

    算法的程序代码如下:

    char filter()

    {

    int sum=0;

    for(count=0;count

    {

    sum+=get_data();

    delay():

    }

    return (char)(sum/N);

    }

    说明:算术平均滤波算法适用于对具有随机干扰的信号进行滤波。这种信号的特点是有一个平均值,信号在某一数值附近上下波动。信号的平均平滑程度完全到决于N值。当N较大时,平滑度高,灵敏度低;当N较小时,平滑度低,但灵敏度高。为了方便求平均值,N一般取4、8、16、32之类的2的整数幂,以便在程序中用移位操作来代替除法。

    (4)加权平均滤波算法

    由于前面所说的“算术平均滤波算法”存在平滑度和灵敏度之间的矛盾。为了协调平滑度和灵敏度之间的关系,可采用加权平均滤波。它的原理是对连续N次采样值分别乘上不同的加权系数之后再求累加,加权系数一般先小后大,以突出后面若干采样的效果,加强系统对参数变化趋势的认识。各个加权系数均小于1的小数,且满足总和等于1的结束条件。这样加权运算之后的累加和即为有效采样值。其中加权平均数字滤波的数学模型是:

    式中:D为N个采样值的加权平均值:XN-i为第N-i次采样值;N为采样次数;Ci为加权系数。加权系数Ci体现了各种采样值在平均值中所占的比例。一般来说采样次数越靠后,取的比例越大,这样可增加新采样在平均值中所占的比重。加权平均值滤波法可突出一部分信号抵制另一部分信号,以提高采样值变化的灵敏度。

    样例程序代码如下:

    char codejq[N]={1,2,3,4,5,6,7,8,9,10,11,12}; //code数组为加权系数表,存在程序存储区

    char codesum_jq=1+2+3+4+5+6+7+8+9+10+11+12;

    char filter()

    {

    char count;

    char value_buff[N];

    int sum=0;

    for(count=0;count

    {

    value_buff[count]=get_data();

    delay();

    }

    for(count=0;count

    sum+=value_buff[count]*jq[count];

    return(char)(sum/sum_jq);

    }

    (5)滑动平均滤波算法

    以上介绍和各种平均滤波算法有一个共同点,即每获取一个有效采样值必须连续进行若干次采样,当采速度慢时,系统的实时得不到保证。这里介绍的滑动平均滤波算法只采样一次,将一次采样值和过去的若干次采样值一起求平均,得到的有效采样值即可投入使用。如果取N个采样值求平均,存储区中必须开辟N个数据的暂存区。每新采集一个数据便存入暂存区中,同时去掉一个最老数据,保存这N个数据始终是最新更新的数据。采用环型队列结构可以方便地实现这种数据存放方式。

    程序代码如下:

    char value_buff[N];

    char i=0;

    char filter()

    {

    char count;

    int sum=0;

    value_buff[i++]=get_data();

    if(i==N)

    i=0;

    for(count=0;count

    sum=value_buff[count];

    return (char)(sum/N);

    }

    (6)低通滤波

    将普通硬件RC低通滤波器的微分方程用差分方程来表求,变可以采用软件算法来模拟硬件滤波的功能,经推导,低通滤波算法如下:

    Yn=a* Xn+(1-a) *Yn-1

    式中 Xn——本次采样值

    Yn-1——上次的滤波输出值;

    ,a——滤波系数,其值通常远小于1;

    Yn——本次滤波的输出值。

    由上式可以看出,本次滤波的输出值主要取决于上次滤波的输出值(注意不是上次的采样值,这和加权平均滤波是有本质区别的),本次采样值对滤波输出的贡献是比较小的,但多少有些修正作用,这种算法便模拟了具体有教大惯性的低通滤波器功能。滤波算法的截止频率可用以下式计算:

    fL=a/2Pit pi为圆周率3.14…

    式中 a——滤波系数;

    , t——采样间隔时间;

    例如:当t=0.5s(即每秒2次),a=1/32时;

    fL=(1/32)/(23.140.5)=0.01Hz

    当目标参数为变化很慢的物理量时,这是很有效的。另外一方面,它不能滤除高于1/2采样频率的干搅信号,本例中采样频率为2Hz,故对1Hz以上的干搅信号应采用其他方式滤除,

    低通滤波算法程序于加权平均滤波相似,但加权系数只有两个:a和1-a。为计算方便,a取一整数,1-a用256-a,来代替,计算结果舍去最低字节即可,因为只有两项,a和1-a,均以立即数的形式编入程序中,不另外设表格。虽然采样值为单元字节(8位A/D)。为保证运算精度,滤波输出值用双字节表示,其中一个字节整数,一字节小数,否则有可能因为每次舍去尾数而使输出不会变化。

    设Yn-1存放在30H(整数)和31H(小数)两单元中,Yn存放在32H(整数)和33H(小数)中。滤波程序如下:

    展开全文
  • 数字滤波技术总结

    千次阅读 2019-11-21 09:09:48
    所谓数字滤波,就是通过一定的计算或判断程序减少干扰在有用信号中的比重。故实质上它是一种程序滤波。 所谓数字滤波,就是通过一定的计算或判断程序减少干扰在有用信号中的比重。故实质上它是一种程序滤波。 (1) ...

    所谓数字滤波,就是通过一定的计算或判断程序减少干扰在有用信号中的比重。故实质上它是一种程序滤波。
    所谓数字滤波,就是通过一定的计算或判断程序减少干扰在有用信号中的比重。故实质上它是一种程序滤波。
    (1) 数字滤波是用程序实现的,不需要增加硬设备,所以可靠性高,稳定性好;
    (2) 数字滤波可以对频率很低(如0.01HZ)的信号实现滤波,克服了模拟滤波器的缺陷。
    (3) 数字滤波器可以根据信号的不同,采用不同的滤波方法或滤波参数,具有灵活、方便、功能强的特点。
    常用的数字滤波算法:算术平均值法中位值滤波法限幅滤波法惯性滤波法

    1. 算术平均值法
    算术平均值法是对输入的N个采样数据xi(i=1~N),寻找这样一个y,使y与各采样值间的偏差的平方和为最小,使
    在这里插入图片描述
    由一元函数求极值原理可得:
    在这里插入图片描述
    特点:
    (1)N值决定了信号平滑度和灵敏度。随着N的增大,平滑度提高,灵敏度降低。应该视具体情况选择N,以便得到满意的滤波效果。
    (2)对每次采样值给出相同的加权系数,即1/N。在不同采样时刻采集数据受到同样重视。实际上某些场合需要增加新采样值在平均值中的比重,可采用加权平均值滤波法。滤波公式为:Y=R0Y0+ R1Y1+ R2Y2+…+ RmYm。
    (3)平均值滤波法一般适用于具有周期性干扰噪声的信号,但对偶然出现的脉冲干扰信号,滤波效果尚不理想。

    2. 中位值滤波法
    中位值滤波法的原理是对被测参数连续采样m次(m≥3)且是奇数,并按大小顺序排列;再取中间值作为本次采样的有效数据。
    特点:
    中位值滤波法对脉冲干扰信号等偶然因素引发的干扰有良好的滤波效果。如对温度、液位等变化缓慢的被测参数采用此法会收到良好的滤波效果;对流量、速度等快速变化的参数一般不宜采用中位值滤波法。
    中位值滤波法和平均值滤波法结合起来使用,滤波效果会更好。即在每个采样周期,先用中位值滤波法得到m个滤波值,再对这m个滤波值进行算术平均,得到可用的被测参数。也称为“中位值+平均值” 滤波法。

    3.限幅滤波法
    由于大的随机干扰或采样器的不稳定,使得采样数据偏离实际值太远,为此采用上、下限限幅,即:
    当y(n)≥yH时,则取y(n)=yH(上限值);
    当y(n)≤yL时,则取y(n)=yL(下限值);
    当yL<y(n)<yH时,则取y(n)。
    而且采用限速(亦称限制变化率),即
    当|y(n)-y(n-1)|≤Δy0时,则取y(n);
    当|y(n)-y(n-1)|>Δy0时,则取y(n)=y(n-1)。
    其中Δy0为两次相邻采样值之差的可能最大变化量。Δy0值的选取,取决于采样周期T及被测参数y应有的正常变化率。
    因此,一定要按照实际情况来确定Δy0、yH及yL,否则,非但达不到滤波效果,反而会降低控制品质。

    4.惯性滤波法
    RC滤波器的传递函数是
    在这里插入图片描述
    其中Tf=RC,它的滤波效果取决于滤波时间常数Tf。
    因此,RC滤波器不可能对极低频率的信号进行滤波。为此,人们模仿上式做成一阶惯性滤波器亦称低通滤波器。
    离散化后
    差分方程
    在这里插入图片描述
    整理
    在这里插入图片描述
    其中:α称为滤波系数,且0<α<1,Ts为采样周期,Tf为滤波器时间常数。
    根据惯性滤波器的频率特性,若滤波系数α越大,则带宽越窄,滤波频率也越低。因此,需要根据实际情况,适当选取α值,使得被测参数既不出现明显的纹波,反应又不太迟缓。

    另外,下面几篇很好的博客介绍的实际代码也写的挺好,重要的是多在实际应用中灵活运用。
    https://blog.csdn.net/m0_37655357/article/details/71404872
    https://blog.csdn.net/fandq1223/article/details/72730672
    这一篇讲了一些理论
    https://blog.csdn.net/clover13/article/details/79492271

    https://wenku.baidu.com/view/e7c4fdcf112de2bd960590c69ec3d5bbfc0ada44.html?from=search

    展开全文
  • 各种常用的数字滤波器

    千次阅读 2019-01-10 17:02:38
    1、限幅滤波法(又称程序判断滤波法) /* A、名称:限幅滤波法(又称程序判断滤波法) B、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A), 每次检测到新值时判断: 如果本次值与上次值之差&...
  • 常用数字滤波算法

    万次阅读 2017-05-25 16:19:49
    常用数字滤波算法 第1种方法:限幅滤波法(又称程序判断滤波法)  A方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A),每次检测到新值时判断: 如果本次值与上次值之差A,则本次值无效,放弃...
  • 1、限幅滤波法(又称程序判断滤波法)  A、方法:  根据经验判断,确定两次采样允许的最大偏差值(设为A)  每次检测到新值时判断:  如果本次值与上次值之差&lt;=A,则本次值有效  如果本次...
  • 高通滤波:边缘提取与增强低通滤波:边缘平滑边缘区域的灰度变换加大,也就是频率较高。所以,对于高通滤波,边缘部分将被保留,非边缘部分将被过滤;对于低通滤波,边缘区域将被平滑过渡。
  • 各种滤波算法的比较

    万次阅读 2016-06-20 15:43:49
    数字滤波(digital filtering):数字滤波(digital filtering):用数字设备,通过一定的算法,对信号进行处理,将某个频段的信号进行滤除,得到新的信号的这一过程叫做数字滤波。数字滤波器可以分为两大部分:即经典...
  • 数字滤波的定义和常用方法

    千次阅读 2017-06-15 20:42:06
    通过一定的计算或者判断程序对采样信号进行平滑加工,减少干扰在有用信号中的比例,通常称之为数字滤波   2.2常用的滤波方法 1.算数平均值滤波  对某一被测参数在第 k 个采样时刻连续采样 n 次得到 n 个采样数据 ...
  • 线性滤波、非线性滤波区别

    千次阅读 2018-10-08 14:19:54
    数字图像处理线性滤波: 输出图像fo(x,y)= T[ fi(x,y) ],T是线性算子,即:输出图像上每个像素点的值都是由输入图像各像素点值加权求和的结果。 非线性滤波的算子中包含了取绝对值、置零等非线性运算。 线性滤波器的...
  • 空间域图像去噪算法

    千次阅读 2015-07-11 16:26:06
    图像去噪希望使用图像自身的冗余信息来去除图像噪声...下面主要介绍基于空间域高斯加权的三种去噪算法,分别为高斯滤波算法,双边滤波和非局部均值滤波,这三种算法随着复杂度的逐渐增大,对细节的识别与保留也在变强。
  • 算法学习笔记之一阶低通滤波算法

    万次阅读 多人点赞 2016-09-27 11:33:17
    1. 一阶滤波算法的原理  一阶滤波,又叫一阶惯性滤波,或一阶低通滤波。是使用软件编程实现普通硬件RC低通滤波器的功能。  一阶低通滤波的算法公式为:  Y(n)=αX(n) (1-α)Y(n-1)   式中:α=滤波系数;X...
  • 自适应卡尔曼滤波与H∞滤波

    万次阅读 2014-11-09 10:46:35
    对于离散化后的系统状态方程
  • 各种滤波算法介绍及比较

    千次阅读 2018-04-03 11:21:32
    1、克服大脉冲干扰的数字滤波法(一). 限幅滤波法; (二).中值滤波法2、抑制小幅度高频噪声的平均滤波法(一).算数平均;(二).滑动平均;(三).加权滑动平均;(四)一阶滞后滤波法3、复合滤波法下面介绍...
  • 线性滤波与非线性滤波区别

    千次阅读 2015-05-15 08:55:03
    数字图像处理线性滤波:输出图像fo(x,y)= T[ fi(x,y) ],T是线性算子,即:输出图像上每个像素点的值都是由输入图像各像素点值加权求和的结果。非线性滤波的算子中包含了取绝对值、置零等非线性运算。 线性滤波器的...
  • 一阶互补滤波

    万次阅读 多人点赞 2017-10-20 23:20:19
    MPU6050可以获得加速度和角速度,但是由于传感器的噪声信号比较大,无法直接通过两个数据来获得该轴上的角度,因此,需要进行互补滤波来近似得到一个比较准确的角度。 传感器原始数据特点分析:加速度数据,不是很...
  • 数字信号处理:运用FFT简单滤波

    千次阅读 2018-09-30 11:43:13
    通过快速Fourier变换我们可以知道信号序列中含有...那么,我们就可以通过将频率域中的某些频率成分的振幅置零,然后运用逆变换到时间域实现滤波。 举例说明: clear all dt = 0.02; N = 206; n = 0:N-1; t = n*dt; ...
  • 中值滤波matlab

    万次阅读 2016-04-07 09:17:00
    摘 要 中值滤波技术是一种在去除噪声的同时能较好保护图像边缘细节的非线性技术,在图像增强和恢复等领域中得到了广泛的应用。文章阐述了中值滤波的原理和特点,并使用软件...数字图像是建立在人眼的感光特性和大
1 2 3 4 5 ... 20
收藏数 28,894
精华内容 11,557
关键字:

数字滤波