spd_learn.functional.rjd#

spd_learn.functional.rjd(X, *, init=None, eps=1e-08, n_iter_max=100)[source]#

Approximate joint diagonalization based on JADE.

This is an implementation of the orthogonal AJD algorithm [1]: joint approximate diagonalization of eigen-matrices (JADE), based on Jacobi angles. The code is a translation of the Matlab code provided on the author’s website.

Parameters:
  • X (ndarray, shape (n_matrices, n, n)) – Set of symmetric matrices to diagonalize.

  • init (None | ndarray, shape (n, n), default=None) – Initialization for the diagonalizer.

  • eps (float, default=1e-8) – Tolerance for stopping criterion.

  • n_iter_max (int, default=100) – The maximum number of iterations to reach convergence.

Returns:

  • V (ndarray, shape (n, n)) – The diagonalizer, an orthogonal matrix.

  • D (ndarray, shape (n_matrices, n, n)) – Set of quasi diagonal matrices, D = V^T X V.

Notes

Added in version 0.2.4.

Changed in version 0.12: Add support for NumPy and PyTorch.

See also

ajd

References

[1]

Jacobi angles for simultaneous diagonalization J.-F. Cardoso and A. Souloumiac, SIAM Journal on Matrix Analysis and Applications, 17(1), pp. 161-164, 1996.