42 lines
786 B
Go
42 lines
786 B
Go
package filter
|
|
|
|
func AlphaBetaFilter(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
|
|
}
|