Version 1.2 introduced two kinds of naming changes, to make the toolbox
compatible with Matlab 7:
All filenames were changed to lowercase. This eliminated a number of
warnings that Matlab 7 generated (version 7 of Matlab is sensitive to
upper/lowercase in filenames, contrary to what happened with previous
The script named 'report' was changed to 'reportresults', to eliminate a
conflict with a function named 'report' that appeared in Matlab version 7
and didn't exist in previous versions of Matlab.
This page gives access to a MATLAB toolbox for Independent Component Analysis
(ICA) and Blind Source Separation (BSS), based on the MISEP method.
The toolbox can perform both linear and nonlinear ICA.
2. Toolbox download
The toolbox can be downloaded here (zip file, around
To install the toolbox simply unzip all the files contained in the zip archive
into a directory of your choice.
4.1 ICA method
Papers that describe the ICA method can be downloaded here.
4.2 Detailed documentation
A manual is included with the toolbox.
4.3 Brief usage instructions
In MATLAB, 'cd' to the directory
containing the toolbox files.
Give the command 'netpar' (this
initializes the toolbox parameters).
Create an array named 'trpattern' with
the data to be analyzed.
The array should have one mixture component per row and
one mixture pattern (mixture vector) per column.
Give the commands:
ninputs = <number of mixture components> ntrain = <number of training patterns>
Note: For a quick test of the toolbox just give the
command 'generate', which will generate a nonlinear mixture of two
supergaussian random sources, with ntrain training patterns. The
variable 'ntrain' is initially set to 1000, by the 'netpar'
Give the command 'netinit' (this
initializes the analysis network's weights and auxiliary data).
Give the command 'train'.
Training should start. The value of the cost function, the cost function
improvement and epoch number should start being reported, one epoch per line.
A figure should be displayed, and should be updated
once every five epochs. Resize this figure so that the left and center plots are
square. The figure shows:
Left: Scatter plot of the extracted components
(1st and 2nd components only).
Middle: Scatter plot of the auxiliary (z)
outputs (1st and 2nd components only).
Right: Estimated cumulative probability
functions of the extracted components(1st and 2nd
components only, scaled to [-1,1] instead of [0,1]).
If you want to stop the training before reaching the
set number of training epochs, press Ctrl-C (you may also set a desired number
of training epochs by setting the variable 'nepochs' before giving the train
To process test data with the resulting ICA system:
Create an array named 'mixeddata' with
the mixture to be processed. The format is the same as for 'trpattern'
above, except that the number of columns doesn't need to be equal to 'ntrain'.
Give the command 'processdata'.
The extracted components will be available in an
array called 'separdata', with the same format as 'mixeddata'.
Luis B. Almeida
Instituto de Telecomunicações
Instituto Superior Técnico
Av. Rovisco Pais, 1