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