[簡易數學應用]移動平均法

每秒抓一次光感測器資料, 並使用陣列來儲存. 並取前3筆歷史資料進行平均, 這樣可避免突發的過高/低值影響機器人運作。

移動平均法每筆資料比重相同, N筆資料的比重就是1/N。 我們可以將較舊的資料比重調低. 例如 0.4 + 0.3 + 0.2 + 0.1。 最舊的資料只占比重的10%,  這稱為加權平均法。

此方法常應用在二輪平衡車, 用來平滑Gyro 的突發震盪。

================================================================
task main(){
int sum, i=0, arr[4]

SetSensorLight(S2){
while(true){

arr[0] = Sensor(S2); Wait(1000);  //sample once per second

for(i=1 ; i<4; i++){

arr[i] = arr[i-1]; //前一筆資料往後推
}
sum = (arr[0]  + arr[1]  + arr[2] + arr[3] )/4;   //求平均

NumOut(20, LCD_LINE1, Sensor(S2));  //顯示即時光值
NumOut(20, LCD_LINE2, sum);  //顯示平均光值
}
}
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *