/* A、名稱:遞推平均濾波法(又稱滑動平均濾波法) B、方法: 把連續取得的N個采樣值看成一個隊列,隊列的長度固定為N, 每次采樣到一個新數據放入隊尾,並扔掉原來隊首的一次數據(先進先出原則), 把隊列中的N個數據進行算術平均運算,獲得新的濾波結果。 N值的選取:流量,N=12;壓力,N=4;液面,N=4-12;溫度,N=1-4。 C、優點: 對周期性干擾有良好的抑制作用,平滑度高; 適用於高頻振盪的系統。 D、缺點: 靈敏度低,對偶然出現的脈沖性干擾的抑制作用較差; 不易消除由於脈沖干擾所引起的采樣值偏差; 不適用於脈沖干擾比較嚴重的場合; 比較浪費RAM。 E、整理:jeffasd */ #include <iostream> using namespace std; // 遞推平均濾波法(又稱滑動平均濾波法) #define FILTER_N 5 int Get_AD(void) { int foo; scanf("%d",&foo); return foo; } int filter_buf[FILTER_N + 1]; int Filter() { int i; int filter_sum = 0; filter_buf[FILTER_N] = Get_AD(); //AD轉換的值賦給數組最后一個值 for(i = 0; i < FILTER_N; i++) { filter_buf[i] = filter_buf[i + 1]; // 所有數據左移,低位仍掉 filter_sum += filter_buf[i]; } return (int)(filter_sum / FILTER_N); } //int Filter(); int main() { int foo; while(1) { foo = Filter(); printf("the Filter is %d\n",foo); } return 0; }