hsignal-0.1.3.2: Signal processing and EEG data analysis

Portabilityuses FFI
Stabilityprovisional
Maintainerhaskell.vivian.mcphail <at> gmail <dot> com

Numeric.Signal

Contents

Description

Signal processing functions

Synopsis

Documentation

class Convolvable a whereSource

Methods

convolve :: a -> a -> aSource

convolve two containers, output is the size of the second argument, no zero padding

Filtering

hammingSource

Arguments

:: Filterable a 
=> Int

length

-> Vector a

the Hamming coeffficents

coefficients of a Hamming window

pwelchSource

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

firSource

Arguments

:: (Filterable a, Container Vector (Complex 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, Container Vector (Complex a), Convert (Complex a)) => Int -> [(a, a)] -> Vector aSource

standard FIR filter | FIR filter with grid a power of 2 greater than the order, ramp = grid/16, hamming window

broadband_firSource

Arguments

:: (Filterable a, Double ~ DoubleOf a, Container Vector (Complex a), Convert (Complex a)) 
=> Int

sampling rate

-> (Int, Int)

(lower,upper) frequency cutoff

-> Vector a

filter coefficients

a broadband FIR

freqzFSource

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

freqzNSource

Arguments

:: (Filterable a, Enum 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

filterSource

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

broadband_filterSource

Arguments

:: (Filterable a, Double ~ DoubleOf a, Container Vector (Complex a), Convert (Complex 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 aSource

the power (amplitude^2 = v * (conj c)) of an analytic signal

analytic_phase :: (Filterable a, Container Vector a, Double ~ DoubleOf a) => Vector (Complex a) -> Vector aSource

the phase of an analytic signal

unwrap :: Filterable a => Vector a -> Vector aSource

unwrap the phase of signal (input expected to be within (-pi,pi)

Preprocessing

detrendSource

Arguments

:: Int

window size

-> Vector Double

data to be detrended

-> Vector Double

detrended data

remove a linear trend from data

resize :: Filterable a => Int -> Vector a -> Vector aSource

resize the vector to length n by resampling

downsample :: Filterable a => Int -> Vector a -> Vector aSource

resample, take one sample every n samples in the original

deriv :: Filterable a => Vector a -> Vector aSource

the difference between consecutive elements of a vector