Copyright | (c) Matthew Donadio 2003 |
---|---|
License | GPL |
Maintainer | m.p.donadio@ieee.org |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell98 |
The module contains a function for performing the bilinear transform.
The input is a rational polynomial representation of the s-domain function to be transformed.
In the bilinear transform, we substitute
2 1 - z^-1
s <-- -- * --------
ts 1 + z^-1
into the rational polynomial, where ts is the sampling period. To get a rational polynomial back, we use the following method:
- Substitute s^n with (2/ts * (1-z^-1))^n == [ -2/ts, 2/ts ]^n
- Multiply the results by (1+z^-1)^n == [ 1, 1 ]^n
- Add up all of the common terms
- Normalize all of the coeficients by a0
where n is the maximum order of the numerator and denominator
- zm :: (Integral b, Fractional a) => a -> b -> [a]
- zp :: (Integral b, Num a) => b -> [a]
- step1 :: Fractional a => a -> [a] -> [[a]]
- step2 :: (Num a, Integral b) => b -> [[a]] -> [[a]]
- step3 :: Num a => [[a]] -> [a]
- step4 :: Fractional a => a -> [a] -> [a]
- bilinear :: Double -> ([Double], [Double]) -> ([Double], [Double])
- prewarp :: Double -> Double -> Double
Documentation
zm :: (Integral b, Fractional a) => a -> b -> [a] Source #
step1 :: Fractional a => a -> [a] -> [[a]] Source #
step4 :: Fractional a => a -> [a] -> [a] Source #
Performs the bilinear transform