From 44080bf833f98528d5cfcf693d6f044ff6e50049 Mon Sep 17 00:00:00 2001 From: Christos Falas Date: Thu, 30 Jan 2025 11:27:41 +0000 Subject: [PATCH] Use eigh instead of eig The mean of Hermitian matrices is also Hermitian --- where_fi/processing/aoa.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/where_fi/processing/aoa.py b/where_fi/processing/aoa.py index 6d3eb0f..d8303c1 100644 --- a/where_fi/processing/aoa.py +++ b/where_fi/processing/aoa.py @@ -113,11 +113,12 @@ class AoA: def evaluate(self, theta: torch.Tensor, tof: torch.Tensor) -> torch.Tensor: R = torch.mean(self.historical_autocorr, dim=0) + assert (R == torch.conj(R).T).all() # The smallest eigenvectors span the noise subspace, # and the largest span the signal subspace. logger.debug(f"Calculating eigenvectors of R: {R.shape}") - eigvals, eigvecs = torch.linalg.eig(R) + eigvals, eigvecs = torch.linalg.eigh(R) assert isinstance(eigvals, torch.Tensor) assert isinstance(eigvecs, torch.Tensor) logger.info(f"Eigenvalues: {eigvals}")