spd_learn.functional.uwedge#

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

Approximate joint diagonalization based on UWEDGE.

This is an implementation of the AJD algorithm [1] [2]: uniformly weighted exhaustive diagonalization using Gauss iterations (U-WEDGE). It is a translation from the Matlab code provided by the authors.

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-7) – Tolerance for stoping criterion.

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

Returns:

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

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

Notes

Added in version 0.2.4.

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

See also

ajd

References

[1]

A Fast Approximate Joint Diagonalization Algorithm Using a Criterion with a Block Diagonal Weight Matrix P. Tichavsky, A. Yeredor and J. Nielsen. 2008 IEEE International Conference on Acoustics, Speech and Signal Processing ICASSP.

[2]

Fast Approximate Joint Diagonalization Incorporating Weight Matrices P. Tichavsky and A. Yeredor. IEEE Trans Signal Process, 57(3), pp. 878 - 891, 2009.