| Copyright | (c) Alexander Vivian Hugh McPhail 2010 2014 2015 2016 |
|---|---|
| License | BSD3 |
| Maintainer | haskell.vivian.mcphail <at> gmail <dot> com |
| Stability | provisional |
| Portability | uses FFI |
| Safe Haskell | None |
| Language | Haskell98 |
Numeric.Signal
Description
Signal processing functions
- class Convolvable a where
- class (Storable a, Container Vector a, Num (Vector a), Convert a, Floating (Vector a), RealElement a, Num a) => Filterable a
- hamming :: Filterable a => Int -> Vector a
- pwelch :: Int -> Int -> Vector Double -> (Vector Double, Vector Double)
- fir :: (Filterable a, Convert (Complex a), Double ~ DoubleOf a) => Int -> [(a, a)] -> Int -> Int -> Vector a -> Vector a
- standard_fir :: (Filterable a, Double ~ DoubleOf a, Convert (Complex a)) => Int -> [(a, a)] -> Vector a
- broadband_fir :: (Filterable a, Double ~ DoubleOf a, Convert (Complex a)) => Int -> (Int, Int) -> Vector a
- freqzF :: (Filterable a, Double ~ DoubleOf a, Filterable (DoubleOf a)) => Vector a -> Vector a -> Int -> Vector a -> Vector a
- freqzN :: (Filterable a, Double ~ DoubleOf a) => Vector a -> Vector a -> Int -> Int -> (Vector a, Vector a)
- filter :: Filterable a => Vector a -> Vector a -> Int -> Vector a -> Vector a
- broadband_filter :: (Filterable a, Double ~ DoubleOf a) => Int -> (Int, Int) -> Vector a -> Vector a
- analytic_signal :: Vector Double -> Vector (Complex Double)
- analytic_power :: Filterable a => Vector (Complex Double) -> Vector a
- analytic_phase :: Filterable a => Vector (Complex a) -> Vector a
- unwrap :: Filterable a => Vector a -> Vector a
- cross_covariance :: Filterable a => Int -> Vector a -> Vector a -> (a, a, Vector a)
- cross_correlation :: Filterable a => Int -> Vector a -> Vector a -> Vector a
- cross_spectrum :: (Filterable a, Double ~ DoubleOf a) => Int -> Vector a -> Vector a -> Vector (Complex Double)
- auto_covariance :: Filterable a => Int -> Vector a -> (a, Vector a)
- auto_correlation :: Filterable a => Int -> Vector a -> Vector a
- detrend :: Int -> Vector Double -> Vector Double
- resize :: Filterable a => Int -> Vector a -> Vector a
- downsample :: Filterable a => Int -> Vector a -> Vector a
- deriv :: Filterable a => Vector a -> Vector a
- cumulative_sum :: Filterable a => Vector a -> Vector a
Documentation
class Convolvable a where Source #
Minimal complete definition
class (Storable a, Container Vector a, Num (Vector a), Convert a, Floating (Vector a), RealElement a, Num a) => Filterable a Source #
Minimal complete definition
fromDouble, filter_, hamming_, complex_power_, downsample_, deriv_, unwrap_, polyEval_, cross_covariance_, cumulative_sum_
Instances
Filtering
Arguments
| :: Filterable a | |
| => Int | length |
| -> Vector a | the Hamming coeffficents |
coefficients of a Hamming window
Arguments
| :: Int | sampling rate |
| -> Int | window size |
| -> Vector Double | input signal |
| -> (Vector Double, Vector Double) | (frequency index,power density) |
Welch (1967) power spectrum density using periodogram/FFT method
Arguments
| :: (Filterable a, Convert (Complex a), Double ~ DoubleOf a) | |
| => Int | order (one less than the length of the filter) |
| -> [(a, a)] | band edge frequency, nondecreasing, [0, f1, ..., f(n-1), 1] ^ band edge magnitude |
| -> Int | grid spacing |
| -> Int | transition width |
| -> Vector a | smoothing window (size is order + 1) |
| -> Vector a | the filter coefficients |
produce an FIR filter
standard_fir :: (Filterable a, Double ~ DoubleOf a, Convert (Complex a)) => Int -> [(a, a)] -> Vector a Source #
standard FIR filter | FIR filter with grid a power of 2 greater than the order, ramp = grid/16, hamming window
Arguments
| :: (Filterable a, Double ~ DoubleOf a, Convert (Complex a)) | |
| => Int | sampling rate |
| -> (Int, Int) | (lower,upper) frequency cutoff |
| -> Vector a | filter coefficients |
a broadband FIR
Arguments
| :: (Filterable a, Double ~ DoubleOf a, Filterable (DoubleOf a)) | |
| => Vector a | zero coefficients |
| -> Vector a | pole coefficients |
| -> Int | sampling rate |
| -> Vector a | frequencies |
| -> Vector a | frequency response |
determine the frequency response of a filter, given a vector of frequencies
Arguments
| :: (Filterable a, Double ~ DoubleOf a) | |
| => Vector a | zero coefficients |
| -> Vector a | pole coefficients |
| -> Int | sampling rate |
| -> Int | number of points |
| -> (Vector a, Vector a) | (frequencies,response) |
determine the frequency response of a filter, given a number of points and sampling rate
Arguments
| :: Filterable a | |
| => Vector a | zero coefficients |
| -> Vector a | pole coefficients |
| -> Int | sampling rate |
| -> Vector a | input signal |
| -> Vector a | output signal |
filters the signal
Arguments
| :: (Filterable a, Double ~ DoubleOf a) | |
| => Int | sampling rate |
| -> (Int, Int) | (lower,upper) frequency cutoff |
| -> Vector a | input signal |
| -> Vector a | output signal |
a broadband filter
Analytic Signal
analytic_signal :: Vector Double -> Vector (Complex Double) Source #
an analytic signal is the original signal with Hilbert-transformed signal as imaginary component
analytic_power :: Filterable a => Vector (Complex Double) -> Vector a Source #
the power (amplitude^2 = v * (conj c)) of an analytic signal
analytic_phase :: Filterable a => Vector (Complex a) -> Vector a Source #
the phase of an analytic signal
unwrap :: Filterable a => Vector a -> Vector a Source #
unwrap the phase of signal (input expected to be within (-pi,pi))
Statistics
Arguments
| :: Filterable a | |
| => Int | maximum delay |
| -> Vector a | time series |
| -> Vector a | time series |
| -> (a, a, Vector a) | (sd_x,sd_y,cov_xy) |
cross covariance of two signals the cross correlation is computed by dividing the result by the product of the two standard deviations
Arguments
| :: Filterable a | |
| => Int | maximum delay |
| -> Vector a | time series |
| -> Vector a | time series |
| -> Vector a | result |
cross correlation of two signals
Arguments
| :: (Filterable a, Double ~ DoubleOf a) | |
| => Int | maximum delay |
| -> Vector a | time series |
| -> Vector a | time series |
| -> Vector (Complex Double) | result |
compute the cross spectrum
Arguments
| :: Filterable a | |
| => Int | maximum delay |
| -> Vector a | time series |
| -> (a, Vector a) | (var,cov_xx) |
auto covariance of two signals the auto correlation is computed by dividing the result by the variance
Arguments
| :: Filterable a | |
| => Int | maximum delay |
| -> Vector a | time series |
| -> Vector a | result |
auto correlation of two signals
Preprocessing
remove a linear trend from data
resize :: Filterable a => Int -> Vector a -> Vector a Source #
resize the vector to length n by resampling
downsample :: Filterable a => Int -> Vector a -> Vector a Source #
resample, take one sample every n samples in the original
deriv :: Filterable a => Vector a -> Vector a Source #
the difference between consecutive elements of a vector
cumulative_sum :: Filterable a => Vector a -> Vector a Source #
cumulative sum of a series