----------------------------------------------------------------------------- -- | -- Module : Numeric.Random.Spectrum.Purple -- Copyright : (c) Matthew Donadio 2003 -- License : GPL -- -- Maintainer : m.p.donadio@ieee.org -- Stability : experimental -- Portability : portable -- -- Function for purple noise, which is differentiated white noise -- -- This currently just does a simple first-order difference. This is -- equivalent to filtering the white noise with @ h[n] = [1,-1] @ -- A better solution would be to use a proper FIR differentiator. -- ----------------------------------------------------------------------------- module Numeric.Random.Spectrum.Purple (purple) where purple :: [Double] -- ^ noise -> [Double] -- ^ purple noise purple :: [Double] -> [Double] purple [Double] xs = forall a b c. (a -> b -> c) -> [a] -> [b] -> [c] zipWith (-) [Double] xs (Double 0forall a. a -> [a] -> [a] :[Double] xs)