31 lines
719 B
Go
31 lines
719 B
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
func main() {
|
|
h := []float64{-8, -9, -3, -1, -6, 7}
|
|
f := []float64{-3, -6, -1, 8, -6, 3, -1, -9, -9, 3, -2, 5, 2, -2, -7, -1}
|
|
g := []float64{24, 75, 71, -34, 3, 22, -45, 23, 245, 25, 52, 25, -67, -96,
|
|
96, 31, 55, 36, 29, -43, -7}
|
|
fmt.Println(h)
|
|
fmt.Println(deconv(g, f))
|
|
fmt.Println(f)
|
|
fmt.Println(deconv(g, h))
|
|
}
|
|
|
|
func deconv(g, f []float64) []float64 {
|
|
h := make([]float64, len(g)-len(f)+1)
|
|
for n := range h {
|
|
h[n] = g[n]
|
|
var lower int
|
|
if n >= len(f) {
|
|
lower = n - len(f) + 1
|
|
}
|
|
for i := lower; i < n; i++ {
|
|
h[n] -= h[i] * f[n-i]
|
|
}
|
|
h[n] /= f[0]
|
|
}
|
|
return h
|
|
}
|