hsignal-0.2.7.1: Signal processing and EEG data analysis

Copyright(c) Alexander Vivian Hugh McPhail 2010, 2014
LicenseBSD3
Maintainerhaskell.vivian.mcphail <at> gmail <dot> com
Stabilityprovisional
Portabilityuses FFI
Safe HaskellNone
LanguageHaskell98

Numeric.Signal

Contents

Description

Signal processing functions

Synopsis

Documentation

class Convolvable a where Source

Methods

convolve :: a -> a -> a Source

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

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_

Filtering

hamming Source

Arguments

:: Filterable a 
=> Int

length

-> Vector a

the Hamming coeffficents

coefficients of a Hamming window

pwelch Source

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

fir Source

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 a Source

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

broadband_fir Source

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

freqzF Source

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

freqzN Source

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

filter Source

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_filter Source

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 a Source

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 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

cross_covariance Source

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

cross_correlation Source

Arguments

:: Filterable a 
=> Int

maximum delay

-> Vector a

time series

-> Vector a

time series

-> Vector a

result

cross correlation of two signals

cross_spectrum Source

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

auto_covariance Source

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

auto_correlation Source

Arguments

:: Filterable a 
=> Int

maximum delay

-> Vector a

time series

-> Vector a

result

auto correlation of two signals

Preprocessing

detrend Source

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 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