Coarray reconstruction¶
API reference¶
- class doatools.estimation.coarray_reconstruction.CovarianceReconstructionBase(array, wavelength, doa_estimator=None, search_grid=None, **kwargs)[source]¶
Bases:
ABCBase class for covariance matrix reconstruction algorithms.
Covariance matrix reconstruction algorithms aim to transform the sample covariance matrix of a sparse array into an augmented covariance matrix that corresponds to a larger virtual uniform linear array, typically based on the difference coarray concept.
- property virtual_array¶
Retrieves the corresponding virtual uniform linear array.
- Returns:
Virtual uniform linear array.
- Return type:
- property doa_estimator¶
Retrieves the DOA estimator.
- Returns:
DOA estimator instance or None.
- estimate(R, k, **kwargs)[source]¶
Estimates the source locations from the given covariance matrix.
- Parameters:
- Returns:
A tuple with the following elements.
resolved (
bool):Trueif the desired number of sources are found. This flag does not guarantee that the estimated source locations are correct. The estimated source locations may be completely wrong! If resolved is False, bothestimatesandspectrumwill beNone.estimates (
SourcePlacement): ASourcePlacementinstance of the same type as the one used in the search grid (if provided), representing the estimated source locations. Will beNoneif resolved isFalse.spectrum (
ndarray): An numpy array of the same shape of the specified search grid, consisting of values evaluated at the grid points. Only present ifreturn_spectrumisTrueand a search grid is provided.
- class doatools.estimation.coarray_reconstruction.SPAEstimator(array, wavelength, lambda_noise: float = 0, doa_estimator=None, search_grid=None, **kwargs)[source]¶
Bases:
CovarianceReconstructionBaseCreates a source location estimator based on Spatial-smoothing based Augmentation (SPA) algorithm.
The SPA algorithm reconstructs a large covariance matrix corresponding to the difference coarray uniform linear array using semi-definite programming (SDP) approach, and then applies subspace-based methods (such as MUSIC) for DOA estimation.
- Parameters:
array (ArrayDesign) – Array design.
wavelength (float) – Wavelength of the carrier wave.
search_grid (SearchGrid, optional) – The search grid used to locate the sources. Defaults to None. Not needed for gridless DOA estimators like RootMUSIC1D and ESPRIT.
lambda_noise (float, optional) – The noise variance, used for the SPA_noisevar variant. Defaults to 0 (standard SPA).
doa_estimator – DOA estimator instance. Defaults to None (RootMUSIC1D).
**kwargs – Other keyword arguments.
References
[1] Z. Yang, L. Xie, and C. Zhang, “A Discretization-Free Sparse and Parametric Approach for Linear Array Signal Processing,” IEEE Transactions on Signal Processing, vol. 62, no. 19, pp. 4959-4973, Oct. 2014.
- class doatools.estimation.coarray_reconstruction.ANMEstimator(array, wavelength, zeta: float = 0.0, doa_estimator=None, search_grid=None, **kwargs)[source]¶
Bases:
CovarianceReconstructionBaseCreates a source location estimator based on Augmentation via Nuclear-norm Minimization (ANM) algorithm.
The ANM algorithm reconstructs the augmented covariance matrix by solving a nuclear-norm minimization problem, which exploits the low-rank property of the covariance matrix.
- Parameters:
array (ArrayDesign) – Array design.
wavelength (float) – Wavelength of the carrier wave.
search_grid (SearchGrid, optional) – The search grid used to locate the sources. Defaults to None. Not needed for gridless DOA estimators like RootMUSIC1D and ESPRIT.
zeta (float, optional) – Regularization parameter. Defaults to 0.0.
max_workers (int, optional) – Maximum number of workers for parallel processing. Defaults to 1.
doa_estimator – DOA estimator instance. Defaults to None (RootMUSIC1D).
**kwargs – Other keyword arguments.
References
[1] C. Zhou, Y. Gu, X. Fan, Z. Shi, G. Mao, and Y. D. Zhang, “Direction-of-Arrival Estimation for Coprime Array via Virtual Array Interpolation,” IEEE Transactions on Signal Processing, vol. 66, no. 22, pp. 5956-5971, Nov. 2018. [2] X. Wu, W.-P. Zhu, and J. Yan, “A Toeplitz Covariance Matrix Reconstruction Approach for Direction-of-Arrival Estimation,” IEEE Transactions on Vehicular Technology, vol. 66, no. 9, pp. 8223-8237, Sept. 2017.
- class doatools.estimation.coarray_reconstruction.StructCovMLEEstimator(array, wavelength, epsilon: float = 0.0001, max_iter: int = 10, lambda_noise: float = None, doa_estimator=None, search_grid=None, **kwargs)[source]¶
Bases:
CovarianceReconstructionBaseCreates a source location estimator based on Structured Covariance Maximum Likelihood Estimation (StructCovMLE) algorithm.
The StructCovMLE algorithm recovers the Toeplitz covariance matrix of a ULA from sparse array data using an iterative optimization approach.
- Parameters:
array (ArrayDesign) – Array design.
wavelength (float) – Wavelength of the carrier wave.
search_grid (SearchGrid, optional) – The search grid used to locate the sources. Defaults to None. Not needed for gridless DOA estimators like RootMUSIC1D and ESPRIT.
epsilon (float, optional) – Relative change threshold for convergence. Defaults to 1e-4.
max_iter (int, optional) – Maximum number of iterations. Defaults to 10.
lambda_noise (float, optional) – Noise variance for noise-aware variant.
doa_estimator – DOA estimator instance. Defaults to None (RootMUSIC1D).
**kwargs – Other keyword arguments.
References
[1] R. R. Pote and B. D. Rao, “Maximum Likelihood-Based Gridless DoA Estimation Using Structured Covariance Matrix Recovery and SBL With Grid Refinement,” IEEE Transactions on Signal Processing, vol. 71, pp. 802-815, 2023.
- class doatools.estimation.coarray_reconstruction.WassersteinEstimator(array, wavelength, use_gradient: bool = False, mu: float = 0.01, lr: float = 0.1, max_iter: int = 500, tol: float = 1e-07, verbose: bool = False, doa_estimator=None, search_grid=None, **kwargs)[source]¶
Bases:
CovarianceReconstructionBaseCreates a source location estimator based on Wasserstein algorithm.
The Wasserstein algorithm estimates the Toeplitz covariance matrix of a Uniform Linear Array (ULA) from the sample covariance matrix of a sparse linear array using SDP.
- Parameters:
array (ArrayDesign) – Array design.
wavelength (float) – Wavelength of the carrier wave.
search_grid (SearchGrid, optional) – The search grid used to locate the sources. Defaults to None. Not needed for gridless DOA estimators like RootMUSIC1D and ESPRIT.
use_gradient (bool, optional) – Whether to use the gradient-based implementation. Defaults to False.
mu (float, optional) – log-barrier coefficient for gradient-based implementation. Defaults to 1e-2.
lr (float, optional) – Learning rate for gradient-based implementation. Defaults to 1e-1.
max_iter (int, optional) – Maximum number of iterations for gradient-based implementation. Defaults to 500.
tol (float, optional) – Convergence threshold for gradient-based implementation. Defaults to 1e-7.
verbose (bool, optional) – Whether to print verbose output for gradient-based implementation. Defaults to False.
doa_estimator – DOA estimator instance. Defaults to None (RootMUSIC1D).
**kwargs – Other keyword arguments.
References
[1] M. Wang, Z. Zhang, and A. Nehorai, “Grid-Less DOA Estimation Using Sparse Linear Arrays Based on Wasserstein Distance,” IEEE Signal Processing Letters, vol. 26, no. 6, pp. 838-842, June 2019.