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