wave is a MATLAB toolbox for unsupervised analysis and visualization of noisy multisite data. Originally developed for multichannel recordings in neuroscience, where both optical imaging and multielectrode data are increasingly common, the functions in wave are general and will be applicable to multisite data in biology, ecology, climatology, and experimental physics. Installation is straightforward via the pathtool utility, and with accessible and standard data structures, the toolbox will be easy to integrate into existing MATLAB analysis code.
Run pathtool, or write the wave directory directly into the MATLAB path with the functions addpath and genpath.
Consider a datacube X, where the first two dimensions index space and the third indexes time (with sampling frequency Fs):
A sample analysis workflow may be:
>> x = bandpass_filter( x, lowpass_cutoff, hipass_cutoff, filter_order, Fs );
>> x = zscore_independent( x );
>> X = analytic_signal( x ); % X now contains the "analytic signal"
>> a = abs( X ); % a contains the "amplitude envelope" at each point in time
>> p = angle( X ); % p now contains the "phase maps"
>> f = instantaneous_frequency( a, Fs ); % f contains "instantaneous frequency"
The user would then be ready to detect waves at specified timepoints in the data by using the phase maps as input to the relevant function (e.g. phase_correlation_distance, phase_correlation_rotation).
The functions in this repository depend on CircStat by Philipp Berens and export_fig by Yair Altman.
Tested on MATLAB under OSX and Linux.
If you publish work using or mentioning wave, I would greatly appreciate if you would cite our paper (bibtex):
Lyle Muller (Western University)