A set of MATLAB functions for direction-of-arrival (DOA) estimation in array signal processing.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
estimator Fixed preconditioning in SORTE. Nov 7, 2018
examples Added experiments for the sensor location error paper. May 9, 2018
performance Minor fixes. Oct 12, 2018
plottool Added the ESPRIT estimator (LS and TLS, with row weighting support). … May 16, 2017
solvers Updated README. May 9, 2018
test Added a utility function to help run Monte Carlo simulations. May 12, 2017
utils Encoding fix + more experiments. Apr 26, 2018
.gitignore Fixed EOF. May 9, 2018
LICENSE.md Updated LICENSE. Jun 5, 2018
README.md Fixed preconditioning in SORTE. Nov 7, 2018
startup.m Fixed the startup script. May 12, 2017


What is doa-tools

A set of MATLAB functions for direction-of-arrival (DOA) estimation related applications, including basic array designs, various DOA estimators, and tools to compute performance bounds. It serves as a small toolbox for my research related to array signal processing.

This repository also contains MATLAB codes that produce figures similar to those in my papers (may not be exactly the same due to the randomness of Monte Carlo simulations). You can browse them here.

If somehow you do not have access to MATLAB, you can use the Python version here.


  • Several array design and difference coarray related functions.
  • Commonly used DOA estimators including MVDR beamformer, MUSIC, root-MUSIC, ESPRIT, etc.
  • Sparsity-based DOA estimator.
  • Functions to compute the Cramér-Rao bounds.
  • Functions to compute the asymptotic covariance matrix of the estimation errors of MUSIC estimators (including difference coarray based).
  • Functions to visualize the estimation results.
  • Several useful utility functions, including a simple progress bar to display the simulation progress.

Getting started

Run startup.m to add doa-tools to your MATLAB search path.

Refer to the examples here.


The source code is released under the MIT license.


If you find my code helpful. You are welcomed to cite my papers here.