Advertisement
Guest User

Untitled

a guest
Feb 18th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- b список коэффициентов КИХ фильтра. Например фильтр 2 порядка: [b2,b1,b0]
  2. -- xs отсчеты сигнала
  3. fir :: [Double] -> [Double] -> [Double]
  4. fir b xs = helper n where
  5.   n = zeros ++ xs -- изначальный сигнал дополненный нулями
  6.   zeros = replicate rank 0.0
  7.   rank = length b - 1
  8.   helper [] = []  -- вспомогательная функция для прохода по всему сигналу
  9.   helper ns = sum (zipWith (*) b ns) : helper (tail ns)
  10.  
  11. -- a, b список коэффициентов БИХ фильтра. Например фильтр 2 порядка: [a2,a1,a0] [b2,b1,b0]
  12. -- xs отсчеты сигнала
  13. iir :: [Double] -> [Double] -> [Double] -> [Double]
  14. iir a b xs = helper n zeros where
  15.   n = zeros ++ xs -- изначальный сигнал дополненный нулями
  16.   zeros = replicate rank 0.0
  17.   rank = max (length b) (length a) - 1
  18.   helper [] _ = []  -- вспомогательная функция для прохода по всему сигналу
  19.   helper ns mem = next : helper (tail ns) mem' where
  20.    next = sum (zipWith (*) b ns) - sum (zipWith (*) a mem)
  21.    mem' = next : init mem
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement