Code Monkey home page Code Monkey logo

pydoatools's Introduction

doatools.py

doatools.py is the Python version of my doa-tools in MATLAB. It provides basic tools for theoretical research on direction-of-arrival (DOA) estimation, including basic array designs, various DOA estimators, plus tools to compute performance bounds. The MATLAB version served as a small toolbox for my research related to array signal processing. I made this Python version because I will no longer have access to MATLAB.

I made some notebooks 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. These examples are not as complete as those in the MATLAB version.

You can also view the full documentation here.

Features

  • Several array design and difference coarray related functions.
  • Commonly used DOA estimators including MVDR beamformer, MUSIC, root-MUSIC, ESPRIT.
  • Maximum-likelihood estimators including AML, CML, and WSF.
  • 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.

Note: doatools.py is designed to facilitate my theoretical research on array signal processing. It is not designed for real-world applications. Nevertheless, the implementations of various DOA estimators in this repository provide good references on understanding these estimation algorithms.

Differences from the MATLAB version

The Python version retains most of the functionalities of the MATLAB version, while adding some new ones. For instance, the Python version supports 2D (azimuth and elevation) DOA estimation and includes more ML-based estimators.

The Python version is also more modular, providing more flexibility over the MATLAB version. Many spectrum-based estimators (e.g., MUSIC) are now reusable, and work for both 1D and 2D sources.

The Python version is better documented.

Requirements

doatools.py requires NumPy, SciPy and Matplotlib. It also requires CVXPY to solve sparse recovery problems. To run the examples, you also need to install tqdm.

Examples

You can view the examples here.

License

The source code is released under the MIT license.

Citation

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

pydoatools's People

Contributors

haihabi avatar morriswmz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.