espnet2.enh.layers.beamformer.generalized_eigenvalue_decomposition
Less than 1 minute
espnet2.enh.layers.beamformer.generalized_eigenvalue_decomposition
espnet2.enh.layers.beamformer.generalized_eigenvalue_decomposition(a: Tensor, b: Tensor, eps=1e-06)
Solves the generalized eigenvalue decomposition through Cholesky decomposition.
ported from https://github.com/asteroid-team/asteroid/blob/master/asteroid/dsp/beamforming.py#L464
a @ e_vec = e_val * b @ e_vec | | Cholesky decomposition on b: | b = L @ L^H, where L is a lower triangular matrix | | Let C = L^-1 @ a @ L^-H, it is Hermitian. | => C @ y = lambda * y => e_vec = L^-H @ y
Reference: https://www.netlib.org/lapack/lug/node54.html
- Parameters:
- a – A complex Hermitian or real symmetric matrix whose eigenvalues and eigenvectors will be computed. (…, C, C)
- b – A complex Hermitian or real symmetric definite positive matrix. (…, C, C)
- Returns: generalized eigenvalues (ascending order) e_vec: generalized eigenvectors
- Return type: e_val