runica() - Perform Independent Component Analysis (ICA) decomposition
of psychophysiological data using the infomax ICA algorithm of
Bell & Sejnowski (1995) with the natural gradient feature of Amari,
Cichocki & Yang, the extended-ICA algorithm of Lee, Girolami &
Sejnowski, PCA dimension reduction, and/or specgram() preprocessing
suggested by M. Zibulevsky. Note: The equivalent binica() is faster.
Usage:
simply >> [weights,sphere] = runica(data);
or
else >> [weights,sphere,activations,bias,signs,lrates] ...
= runica(data,'Key1',Value1',...);
Input_Variable:
data = input data (chans,frames*epochs).
Note: If data consists of multiple discontinuous epochs,
each epoch should be separately baseline-zero'd using:
>> data = rmbase(data,frames,basevector);
Optional_Keywords Keyword_Values Default_Values
'ncomps' = [N] number of ICA components to compute (default -> chans)
using rectangular ICA decomposition
'pca' = [N] decompose a principal component (default -> 0=off)
subspace of the data. Value is the number of PCs to retain.
'sphering' = ['on'/'off'] flag sphering of data (default -> 'on')
'weights' = [W] initial weight matrix (default -> eye())
(Note: if 'sphering' 'off', default -> spher())
'lrate' = [rate] initial ICA learning rate (<< 1) (default -> heuristic)
'block' = [N] ICA block size (<< datalength) (default -> heuristic)
'anneal' = annealing constant (0,1] (defaults -> 0.90, or 0.98, extended)
controls speed of convergence
'annealdeg' = [N] degrees weight change for annealing (default -> 70)
'stop' = [f] stop training when weight-change < this (default -> 1e-6)
'maxsteps' = [N] max number of ICA training steps (default -> 512)
'bias' = ['on'/'off'] perform bias adjustment (default -> 'on')
'momentum' = [0<f<1] training momentum (default -> 0)
'extended' = [N] perform tanh() "extended-ICA" with sign estimation
every N training blocks. If N < 0, fix number of sub-Gaussian
components to -N [faster than N>0] (default|0 -> off)
'specgram' = [srate loHz hiHz frames winframes] decompose a complex time/frequency
transform of the data. (Note: winframes must divide frames)
(defaults [srate 0 srate/2 size(data,2) size(data,2)])
'posact' = make all component activations net-positive(default 'on'}
'verbose' = give ascii messages ('on'/'off') (default -> 'on')
Output_Variables [RO = output in reverse order of projected mean variance
unless starting weight matrix passed ('weights' above)]
weights = ICA weight matrix (comps,chans) [RO]
sphere = data sphering matrix (chans,chans) = spher(data)
Note: unmixing_matrix = weights*sphere {sphering off -> eye(chans)}
activations = activation time courses of the output components (ncomps,frames*epochs)
bias = vector of final (ncomps) online bias [RO] (default = zeros())
signs = extended-ICA signs for components [RO] (default = ones())
[-1 = sub-Gaussian; 1 = super-Gaussian]
lrates = vector of learning rates used at each training step
Toolbox function list