# Diagonalizations.jl

Documentation |
---|

**Diagonalizations.jl** is a **Julia** signal processing package implementing several *closed form* and *iterative* diagonalization procedures for both *real* and *complex* data input:

Acronym | Full Name | Datasets ( m ) |
Observations ( k ) |
---|---|---|---|

PCA | Principal Component Analysis | 1 | 1 |

Whitening | Whitening (Sphering) | 1 | 1 |

MCA | Maximum Covariance Analysis | 2 | 1 |

CCA | Canonical Correlation Analysis | 2 | 1 |

gMCA | generalized MCA | >1 | 1 |

gCCA | generalized CCA | >1 | 1 |

CSP | Common Spatial Pattern | 1 | 2 |

CSTP | Common Spatio-Temporal Pattern | 1 | >1 |

AJD | Approximate Joint Diagonalization | 1 | >1 |

mAJD | multiple AJD | >1 | >1 |

For example the MCA diagonalizes a cross-covariance matrix, like in this figure:

As compared to MultivariateStats.jl this package supports :

- the
`dims`

keyword like in the StatsBase.jl package - shrinkage covariance matrix estimations throught package CovarianceEstimation
- average covariance estimations using metrics for the manifold of positive definite matrices using the PosDefManifold package
- facilities to set the subspace dimension upon construction
- diagonalization procedures for the case
*m≥2*and*k≥2*.

This package implements state-of-the-art **approximate joint diagonalization** algorithms. For some benchmarking see
here.

## Installation

To install the package execute the following command in Julia's REPL:

```
]add CovarianceEstimation PosDefManifold Diagonalizations
```

## Examples

```
using Diagonalizations, PosDefManifold, Test
n, t=10, 100
# generate an nxt data matrix
X=genDataMatrix(n, t)
# principal component analysis
pX=pca(X)
# the following is an equivalent constructor taking the covariance matrix as input
pC=pca(Symmetric((X*X')/t))
@test pX==pC # the output of the two constructors above is equivalent
@test C≈pC.F*pC.D*pC.F'
# get only the first p eigenvectors, where p is the smallest integer
# explaining at least 75% of the variance
pX=pca(X; eVar=0.75)
Y=genDataMatrix(n, t)
# maximum covariance analysis
mXY=mca(X, Y)
# canonical correlation analysis
cXY=cca(X, Y)
# approximate joint diagonalization
Xset=randP(5, 20)
aXset=ajd(Xset; algorithm=:JADE)
aXset=ajd(Xset; algorithm=:LogLike)
# etc., etc.
```

## About the Authors

Marco Congedo, is a research scientist of CNRS (Centre National de la Recherche Scientifique), working at UGA (University of Grenoble Alpes). **contact**: marco *dot* congedo *at* gmail *dot* com

Documentation |
---|