PowerICA (version 1.0)

by Shahab Basiri

PowerICA is a numerically stable ICA algorithm, which is especially useful when the sample size is not orders of magnitude larger than the data dimensionality [1]. This is the finite-sample regime in which the fixed-point FastICA algorithm [2] is often reported to have convergence problems [3].

Contents

Compatibility

The code is tested on Matlab R2017a, but should work on other versions of Matlab with no or little changes as well as all platforms (Windows 64-bit, Linux 64-bit, or Mac 64-bit).

Installation for Matlab version >= 2014b

Download the Matlab toolbox installation file PowerICA.mltbx. Double click the downloaded file and the Matlab installs the toolbbox. If it does not work follow the instructions below for installation for Matlab version < 2014b.

Installation for Matlab version < 2014b

  1. Extract the ZIP File PowerICA.zip to a local folder. It creates PowerICA directory to your local path.
  2. Add the PowerICA folder to the Matlab search path as follows. Start Matlab and go to the PowerICA folder, and execute the lines:
addpath(pwd) %<-- Add the toolbox to the Matlab path
save path  %<-- Save the path %

How to cite

This function is implemented based on Algorithm 1 in paper below. If you use this toolbox or any of its function, please cite the publication:

S. Basiri, E. Ollila and V. Koivunen, "Alternative Derivation of FastICA With Novel Power Iteration Algorithm," IEEE Signal Processing Letters, vol. 24, no. 9, pp. 1378-1382, Sept. 2017.

Now you are good to go!

Syntax

[ W , flg] = PowerICA( X , nonlin, W0 , mode)

to get help type

help Powerica
  This function is implemented based on Algorithm 1 in paper below.
    S. Basiri, E. Ollila and V. Koivunen, "Alternative Derivation of 
    FastICA With Novel Power Iteration Algorithm," in IEEE Signal 
    Processing Letters, vol. 24, no. 9, pp. 1378-1382, Sept. 2017.
  If you use this function in your publication please cite our paper using 
  the above citation info.
 
  Matlab Code by Shahab Basiri, Aalto University 2017
  shahab.basiri@aalto.fi
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % INPUT:
    X: d*n array of mixture recordings (X should be centered and whitened).
    nonlin: ICA nonlinearities. 
            It can be either a single string or a d*1 array of strings. 
            The following nonlinearities are supported.
            tanh, pow3, gaus, skew, rt06, lt06, bt00, bt02, bt06, bt10, 
            bt12, bt14, bt16, tan1, tan2, tan3, tan4, gau1, gau2, gau3.
    W0: the initial start of the algorithm (an orthogonal d*d matrix).
    mode: can be set either to 'serial' or 'parallel'. The 'serial' mode 
          is used when only one computing node is available or the dataset
          is of small size. The 'parallel' mode runs two Matlab instances
          on different CPU cores. It is recommended for large datasets.
 % OUTPUT:
    W: PowerICA estimate of demixing matrix (d*d).
    flg: 1 when the algorithm has converged successfully  and 0 when the
    algorithm has failed to converge.
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

to have a quick acces to the provided demo examples in the toolbox simply type

demo PowerICA

References

[1] S. Basiri, E. Ollila, and V. Koivunen, "Alternative derivation of FastICA with novel power iteration algorithm," IEEE Signal Processing Letters, vol. 24, no. 9, pp. 1378-1382, Sept 2017.

[2] A. Hyvarinen and E. Oja, "A fast fixed-point algorithm for independent component analysis," Neural Computation, vol. 9, pp. 1483-1492, 1997.

[3] P. Tichavsky, Z. Koldovsky, and E. Oja, "Performance analysis of the FastICA algorithm and Cramer-Rao bounds for linear independent component analysis," IEEE Transactions on Signal Processing, vol. 54, no. 4, pp. 1189-1203, April 2006.

[4] J. Miettinen, K. Nordhausen, H. Oja, and S. Taskinen, "Deflation-based FastICA with adaptive choices of nonlinearities," IEEE Transactions on Signal Process- ing, vol. 62, no. 21, pp. 5716-5724, Nov 2014.

Contact

Shahab Basiri Esa Ollila Research group website
shahab.basiri@aalto.fi esa.ollila@aalto.fi Toolbox website