- volumeMaximum :: C y => T y -> y
- volumeEuclidean :: C y => T y -> y
- volumeEuclideanSqr :: C y => T y -> y
- volumeSum :: (C y, C y) => T y -> y
- volumeVectorMaximum :: (C y yv, Ord y) => T yv -> y
- volumeVectorEuclidean :: (C y, C y yv) => T yv -> y
- volumeVectorEuclideanSqr :: (C y, Sqr y yv) => T yv -> y
- volumeVectorSum :: (C y yv, C y) => T yv -> y
- bounds :: Ord y => T y -> (y, y)
- histogramDiscreteArray :: T Int -> (Int, T Int)
- histogramLinearArray :: C y => T y -> (Int, T y)
- histogramDiscreteIntMap :: T Int -> (Int, T Int)
- histogramLinearIntMap :: C y => T y -> (Int, T y)
- withAtLeast1 :: String -> (T y -> (Int, T y)) -> T y -> (Int, T y)
- withAtLeast2 :: C y => String -> (T y -> (Int, T y)) -> T y -> (Int, T y)
- histogramIntMap :: C y => y -> T y -> (Int, T Int)
- quantize :: C y => y -> T y -> T Int
- attachOne :: T i -> [(i, Int)]
- meanValues :: C y => T y -> [(Int, y)]
- spread :: C y => (y, y) -> [(Int, y)]
- directCurrentOffset :: C y => T y -> y
- scalarProduct :: C y => T y -> T y -> y
- centroid :: C y => T y -> y
- centroidRecompute :: C y => T y -> y
- firstMoment :: C y => T y -> y
- average :: C y => T y -> y
- averageRecompute :: C y => T y -> y
- rectify :: C y => T y -> T y
- zeros :: (Ord y, C y) => T y -> T Bool
- flipFlopHysteresis :: Ord y => (y, y) -> Bool -> T y -> T Bool
- chirpTransform :: C y => y -> T y -> T y
Notions of volume
volumeMaximum :: C y => T y -> ySource
Volume based on Manhattan norm.
volumeEuclidean :: C y => T y -> ySource
Volume based on Energy norm.
volumeEuclideanSqr :: C y => T y -> ySource
volumeVectorMaximum :: (C y yv, Ord y) => T yv -> ySource
Volume based on Manhattan norm.
volumeVectorEuclidean :: (C y, C y yv) => T yv -> ySource
Volume based on Energy norm.
volumeVectorEuclideanSqr :: (C y, Sqr y yv) => T yv -> ySource
volumeVectorSum :: (C y yv, C y) => T yv -> ySource
Volume based on Sum norm.
bounds :: Ord y => T y -> (y, y)Source
Compute minimum and maximum value of the stream the efficient way. Input list must be non-empty and finite.
Miscellaneous
histogramDiscreteArray :: T Int -> (Int, T Int)Source
Input list must be finite. List is scanned twice, but counting may be faster.
histogramLinearArray :: C y => T y -> (Int, T y)Source
Input list must be finite.
If the input signal is empty, the offset is undefined
.
List is scanned twice, but counting may be faster.
The sum of all histogram values is one less than the length of the signal.
histogramDiscreteIntMap :: T Int -> (Int, T Int)Source
Input list must be finite.
If the input signal is empty, the offset is undefined
.
List is scanned once, counting may be slower.
meanValues :: C y => T y -> [(Int, y)]Source
directCurrentOffset :: C y => T y -> ySource
Requires finite length. This is identical to the arithmetic mean.
scalarProduct :: C y => T y -> T y -> ySource
centroid :: C y => T y -> ySource
directCurrentOffset
must be non-zero.
centroidRecompute :: C y => T y -> ySource
firstMoment :: C y => T y -> ySource
averageRecompute :: C y => T y -> ySource
zeros :: (Ord y, C y) => T y -> T BoolSource
Detects zeros (sign changes) in a signal. This can be used as a simple measure of the portion of high frequencies or noise in the signal. It ca be used as voiced/unvoiced detector in a vocoder.
zeros x !! n
is True
if and only if
(x !! n >= 0) /= (x !! (n+1) >= 0)
.
The result will be one value shorter than the input.
flipFlopHysteresis :: Ord y => (y, y) -> Bool -> T y -> T BoolSource
Detect thresholds with a hysteresis.
chirpTransform :: C y => y -> T y -> T ySource
Almost naive implementation of the chirp transform, a generalization of the Fourier transform.
More sophisticated algorithms like Rader, Cooley-Tukey, Winograd, Prime-Factor may follow.