滑動平均算法

這裏提到的滑動平均濾波算法對於實時採樣的一些單片機,傳感器之類的,要對實時動態獲取的所有值做一個求平均的運算,當然這裏所說的實時數據的平均值要有一個步長(比如說最近20次最新取值算平均)。如果取N個採樣值求平均,存儲區中必須開闢N個數據的暫存區。每新採集一個數據便存入暫存區中,同時去掉一個最老數據,保存這N個數據始終是最新更新的數據。採用環型隊列結構可以方便地實現這種數據存放方式。

兩個循環遍歷兩個判斷清空

程序代碼如下:
char value_buff[N];                     //N相當於選定一個窗口大小,對窗口數據做平均!
char i=0;
char filter()
{
     char count;
     int sum=0;
     value_buff[i++]=get_data;  //get_data爲實時獲取的數據
     if(i==N)
         i=0;              //當數據大於數組長度,替換數據組的一個數據  相當於環形隊列更新,先進先出!
if(count==5)sum=0;        //注意清空和
for(count=0;count<N;count++)
       sum+=value_buff[count];
return (char)(sum/N);
}

 

發佈了10 篇原創文章 · 獲贊 15 · 訪問量 7028
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章