|
|
|
|
|
Description |
This module implements the Fast Fourier Transformation purely in Haskell. |
|
Synopsis |
|
fft :: Int -> [Double] -> [[Complex Double]] | | fft' :: Int -> [Complex Double] -> [Double] | | fftt :: Int -> ([[Complex Double]] -> [Complex Double]) -> [Double] -> [Double] | | fftc :: Int -> [Complex Double] -> [[Complex Double]] | | fftc' :: Int -> [Complex Double] -> [[Complex Double]] | | ffttv :: Int -> [Double] -> [Double] -> [Double] | | fftco :: Int -> [Complex Double] -> [[Complex Double]] | | fftco' :: Int -> [Complex Double] -> [Complex Double] | | rect_transform :: (Floating a) => Int -> [a] -> [[a]] | | rect_filter :: (Floating a) => Int -> ([[a]] -> [[a]]) -> [a] -> [a] | | rect_filter' :: (Floating a) => Int -> [[a]] -> [a] -> [a] | | i :: Complex Double | | w :: Int -> Complex Double | | ws :: Bool -> Int -> [Complex Double] | | map2 :: (a -> a -> b) -> [a] -> [b] | | zip2 :: [a] -> [a] -> [a] | | appendpair :: ([a], [a]) -> [a] | | reorder :: Int -> [[a]] -> [[a]] | | reorder_init' :: [a] -> [[a]] | | butterfly :: Complex Double -> Complex Double -> Complex Double -> (Complex Double, Complex Double) | | butterfly' :: Complex Double -> Complex Double -> Complex Double -> (Complex Double, Complex Double) | | fft_level :: [Complex Double] -> [[Complex Double]] -> [[Complex Double]] | | fft_merge :: [Complex Double] -> [Complex Double] -> [Complex Double] -> ([Complex Double], [Complex Double]) | | fft_level' :: [Complex Double] -> [[Complex Double]] -> [[Complex Double]] | | fft_merge' :: [Complex Double] -> [Complex Double] -> [Complex Double] -> ([Complex Double], [Complex Double]) | | overlap_curve :: Int -> [Double] | | mix_overlap :: Int -> [[Double]] -> [Double] |
|
|
|
FFT |
|
fft :: Int -> [Double] -> [[Complex Double]] |
FFT transformation. Input is grouped into overlapping parts of 2^(N+2) reals and mapped to sublists
with 2^(N+1) complex numbers. |
|
fft' :: Int -> [Complex Double] -> [Double] |
Inverse FFT transformation. Complex input is grouped into parts with length 2^(N+1) and mapped to
sublists with 2^(N+2) reals, which are overlapped and mixed. |
|
fftt :: Int -> ([[Complex Double]] -> [Complex Double]) -> [Double] -> [Double] |
FFT transformation with overlapping and windowing.
Argument function maps the coefficients. Windowsize: 2^(N+2), i. e. 2^(N+1) coefficients |
|
FFT |
|
fftc :: Int -> [Complex Double] -> [[Complex Double]] |
FFT transformation for complex input (segments of length 2^n).
No overlapping or windowing. |
|
fftc' :: Int -> [Complex Double] -> [[Complex Double]] |
Inverse FFT transformation for complex input (segments of length 2^n).
No overlapping or windowing. |
|
ffttv :: Int -> [Double] -> [Double] -> [Double] |
|
fftco :: Int -> [Complex Double] -> [[Complex Double]] |
FFT for complex input with overlapping. Segment-size: 2^(n+1) |
|
fftco' :: Int -> [Complex Double] -> [Complex Double] |
|
rect_transform :: (Floating a) => Int -> [a] -> [[a]] |
A self-inverse transformation similar to FFT but with a simple butterfly
operation that uses always W=1. Modifying the data between application
and inverse is similar to filtering but the result will be built up from
rectangle waves instead of sinus waves. |
|
rect_filter :: (Floating a) => Int -> ([[a]] -> [[a]]) -> [a] -> [a] |
|
rect_filter' :: (Floating a) => Int -> [[a]] -> [a] -> [a] |
|
i :: Complex Double |
The complex value i = (0 :+ 1) |
|
w :: Int -> Complex Double |
The n-th root of 1 |
|
ws :: Bool -> Int -> [Complex Double] |
the 2n-th root with exponents 0, 1, .. n. False=inverse (exponents are negated) |
|
map2 :: (a -> a -> b) -> [a] -> [b] |
|
zip2 :: [a] -> [a] -> [a] |
|
appendpair :: ([a], [a]) -> [a] |
|
reorder :: Int -> [[a]] -> [[a]] |
list is grouped into sublists with length N (must be power of 2) and bitwise reverse order |
|
reorder_init' :: [a] -> [[a]] |
|
butterfly :: Complex Double -> Complex Double -> Complex Double -> (Complex Double, Complex Double) |
|
butterfly' :: Complex Double -> Complex Double -> Complex Double -> (Complex Double, Complex Double) |
|
fft_level :: [Complex Double] -> [[Complex Double]] -> [[Complex Double]] |
|
fft_merge :: [Complex Double] -> [Complex Double] -> [Complex Double] -> ([Complex Double], [Complex Double]) |
|
fft_level' :: [Complex Double] -> [[Complex Double]] -> [[Complex Double]] |
|
fft_merge' :: [Complex Double] -> [Complex Double] -> [Complex Double] -> ([Complex Double], [Complex Double]) |
|
overlap_curve :: Int -> [Double] |
Creates a fade with length N |
|
mix_overlap :: Int -> [[Double]] -> [Double] |
Overlaps a sequence of parts of length N (overlaps by N/2). |
|
Produced by Haddock version HADDOCK_VERSION |