天天看點

算法學習筆記之滑動平均濾波算法

      滑動平均濾波算法隻采樣一次,将一次采樣值和過去的若幹次采樣值一起求平均,得到的有效采樣值即可投入使用。如果取N個采樣值求平均,存儲區中必須開辟N個資料的暫存區。每新采集一個資料便存入暫存區中,同時去掉一個最老資料,儲存這N個資料始終是最新更新的資料。采用環型隊列結構可以友善地實作這種資料存放方式。

程式代碼如下:

char value_buff[N];                     //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<N;count++)

       sum=value_buff[count];

return (char)(sum/N);

}

優點:

   對周期性幹擾有良好的抑制作用,平滑度高

   适用于高頻振蕩的系統 

缺點:

   靈敏度低

   對偶然出現的脈沖性幹擾的抑制作用較差

   不易消除由于脈沖幹擾所引起的采樣值偏差

   不适用于脈沖幹擾比較嚴重的場合

   比較浪費RAM

繼續閱讀