17 lines
513 B
Haskell
17 lines
513 B
Haskell
import Data.List
|
|
|
|
h, f, g :: [Double]
|
|
h = [-8,-9,-3,-1,-6,7]
|
|
f = [-3,-6,-1,8,-6,3,-1,-9,-9,3,-2,5,2,-2,-7,-1]
|
|
g = [24,75,71,-34,3,22,-45,23,245,25,52,25,-67,-96,96,31,55,36,29,-43,-7]
|
|
|
|
scale x ys = map (x*) ys
|
|
|
|
deconv1d :: (Fractional a) => [a] -> [a] -> [a]
|
|
deconv1d xs ys = takeWhile (/=0) $ deconv xs ys
|
|
where [] `deconv` _ = []
|
|
(0:xs) `deconv` (0:ys) = xs `deconv` ys
|
|
(x:xs) `deconv` (y:ys) =
|
|
q : zipWith (-) xs (scale q ys ++ repeat 0) `deconv` (y:ys)
|
|
where q = x / y
|