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

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