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