hsignal-0.2.7.5: Signal processing and EEG data analysis

Copyright(c) Alexander Vivian Hugh McPhail 2010 2014 2015 2016
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 #

Minimal complete definition

convolve

Methods

convolve :: a -> a -> a Source #

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

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

broadband_fir Source #

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

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, 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) 
=> 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

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