滑動平均濾波算法隻采樣一次,将一次采樣值和過去的若幹次采樣值一起求平均,得到的有效采樣值即可投入使用。如果取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