package filter func FilterByType(t int, arr []float64, init float64) float64 { switch t { case 0: return AlphaBeta(arr, init) case 1: return Lag_1(arr, init) case 2: return Lag_2(arr, init) case 3: return Lag_3(arr, init) } return AlphaBeta(arr, init) } func AlphaBeta(arr []float64, init float64) float64 { value := init for i := range arr { gain := 1.0 / (float64(i + 1)) value += (gain*arr[i] - value) } return value } // Simple lag filter. value = old * 0.9 + new * 0.1 func Lag_1(arr []float64, init float64) float64 { value := init for i := range arr { value = value*0.9 + arr[i]*0.1 } return value } // Simple lag filter. value = old * 0.95 + new * 0.05 func Lag_2(arr []float64, init float64) float64 { value := init for i := range arr { value = value*0.95 + arr[i]*0.05 } return value } // Simple lag filter. value = old * 0.99 + new * 0.01 func Lag_3(arr []float64, init float64) float64 { value := init for i := range arr { value = value*0.99 + arr[i]*0.01 } return value }