remove eigh

The original assumption that we can use eigh because the autocorrelation
matrix is Hermitian is not true. Although the true autocorrelation
matrix is Hermitian, this is not necessarily the case for the estimate we
use.
This commit is contained in:
Christos Falas 2025-02-24 16:12:04 +00:00
parent c4196503d8
commit 342357bd0c
No known key found for this signature in database

View File

@ -113,12 +113,11 @@ class AoA:
def evaluate(self, theta: torch.Tensor, tof: torch.Tensor) -> torch.Tensor: def evaluate(self, theta: torch.Tensor, tof: torch.Tensor) -> torch.Tensor:
R = torch.mean(self.historical_autocorr, dim=0) R = torch.mean(self.historical_autocorr, dim=0)
assert (R == torch.conj(R).T).all()
# The smallest eigenvectors span the noise subspace, # The smallest eigenvectors span the noise subspace,
# and the largest span the signal subspace. # and the largest span the signal subspace.
logger.debug(f"Calculating eigenvectors of R: {R.shape}") logger.debug(f"Calculating eigenvectors of R: {R.shape}")
eigvals, eigvecs = torch.linalg.eigh(R) eigvals, eigvecs = torch.linalg.eig(R)
assert isinstance(eigvals, torch.Tensor) assert isinstance(eigvals, torch.Tensor)
assert isinstance(eigvecs, torch.Tensor) assert isinstance(eigvecs, torch.Tensor)
logger.info(f"Eigenvalues: {eigvals}") logger.info(f"Eigenvalues: {eigvals}")