Main JADE reference:
title = "Blind beamforming for non {G}aussian signals",
author = "Jean-Francois Cardoso and Antoine Souloumiac",
HTML = "ftp://sig.enst.fr/pub/jfc/Papers/iee.ps.gz",
journal = "IEE Proceedings-F",
pages = {362-370}, volume = 140, year = 1993
Note 1)
The original Jade algorithm/code deals with complex signals in
Gaussian noise white and exploits an underlying assumption that the
model of independent components actually holds. This is a
reasonable assumption when dealing with some narrowband signals.
In this context, one may i) seriously consider dealing precisely
with the noise in the whitening process and ii) expect to use the
small number of significant eigenmatrices to efficiently summarize
all the 4th-order information. All this is done in the JADE
algorithm.
In this implementation, we deal with real-valued signals and we do
NOT expect the ICA model to hold exactly. Therefore, it is
pointless to try to deal precisely with the additive noise and it
is very unlikely that the cumulant tensor can be accurately
summarized by its first n eigen-matrices. Therefore, we consider
the joint diagonalization of the whole set of eigen-matrices.
However, in such a case, it is not necessary to compute the
eigenmatrices at all because one may equivalently use `parallel
slices' of the cumulant tensor. This part (computing the
eigen-matrices) of the computation can be saved: it suffices to
jointly diagonalize a set of cumulant matrices. Also, since we are
dealing with reals signals, it becomes easier to exploit the
symmetries of the cumulants to further reduce the number of
matrices to be diagonalized. These considerations, together with
other cheap tricks lead to this version of JADE which is optimized
(again) to deal with real mixtures and to work `outside the model'.
As the original JADE algorithm, it works by minimizing a `good set'
of cumulants.
Note 2)
The rows of the separating matrix B are resorted in such a way that
the columns of the corresponding mixing matrix A=pinv(B) are in
decreasing order of (Euclidian) norm. This is a simple, `almost
canonical' way of fixing the indetermination of permutation. It
has the effect that the first rows of the recovered signals (ie the
first rows of B*X) correspond to the most energetic *components*.
Recall however that the source signals in S=B*X have unit variance.
Therefore, when we say that the observations are unmixed in order
of decreasing energy, the energetic signature is found directly as
the norm of the columns of A=pinv(B).
Note 3)
In experiments where JADE is run as B=jadeR(X,m) with m varying in
range of values, it is nice to be able to test the stability of the
decomposition. In order to help in such a test, the rows of B can
be sorted as described above. We have also decided to fix the sign
of each row in some arbitrary but fixed way. The convention is
that the first element of each row of B is positive.
Note 4)
Contrary to many other ICA algorithms, JADE (or least this version)
does not operate on the data themselves but on a statistic (the
full set of 4th order cumulant). This is represented by the matrix
CM below, whose size grows as m^2 x m^2 where m is the number of
sources to be extracted (m could be much smaller than n). As a
consequence, (this version of) JADE will probably choke on a
`large' number of sources. Here `large' depends mainly on the
available memory and could be something like 40 or so. One of
these days, I will prepare a version of JADE taking the `data'
option rather than the `statistic' option.
Toolbox function list