shogun-toolbox/shogun — pull request #1205 by pickle27 (2013-07-02 20:31:14+00:00)
Title: added base class for AJD and an example of a derived class header

A base class for the Approximate Joint Diagonalization (AJD) Algorithms. AJD is itself a mathematical process so I think it belongs in shogun/mathematics/ajd (I made a folder because there will be a few techniques and I thought this would keep everything neat and tidy), the ICA and BSS methods that will make use of these AJD techniques will live else where (most likely shogun/converters).

This interface allows for creating an instance of an AJD algorithm or using polymorphism and the base class. The work flow for this would look like:
CApproxJointDiagonalizer *d = new JADiag();
d->compute(...)
SGMatrix V = d->V();
// or simply
SGMatrix V = d->compute(...)

but it also allows a one liner like this:
SGMatrix V = JADiag::diagonalize(...);

I came up with this design after a bit of thought but I would like to hear what other people think!

If everyone thinks its okay I will add the implementation files and the other algorithms along with unit tests!