Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- b список коэффициентов КИХ фильтра. Например фильтр 2 порядка: [b2,b1,b0]
- -- xs отсчеты сигнала
- fir :: [Double] -> [Double] -> [Double]
- fir b xs = helper n where
- n = zeros ++ xs -- изначальный сигнал дополненный нулями
- zeros = replicate rank 0.0
- rank = length b - 1
- helper [] = [] -- вспомогательная функция для прохода по всему сигналу
- helper ns = sum (zipWith (*) b ns) : helper (tail ns)
- -- a, b список коэффициентов БИХ фильтра. Например фильтр 2 порядка: [a2,a1,a0] [b2,b1,b0]
- -- xs отсчеты сигнала
- iir :: [Double] -> [Double] -> [Double] -> [Double]
- iir a b xs = helper n zeros where
- n = zeros ++ xs -- изначальный сигнал дополненный нулями
- zeros = replicate rank 0.0
- rank = max (length b) (length a) - 1
- helper [] _ = [] -- вспомогательная функция для прохода по всему сигналу
- helper ns mem = next : helper (tail ns) mem' where
- next = sum (zipWith (*) b ns) - sum (zipWith (*) a mem)
- mem' = next : init mem
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement