DOA_Py
DOA Estimation algorithms implemented in Python. It can be used for ULA, UCA and broadband/wideband DOA estimation.
Getting Started
Installation
pip install doa_py
or install from source
git clone https://github.com/zhiim/doa_py.git
cd doa_py
pip install .
Usage
A sample example of DOA estimation using MUSIC algorithm.
import numpy as np
from doa_py import arrays, signals
from doa_py.algorithm import music
from doa_py.plot import plot_spatial_spectrum
# Create a 8-element ULA with 0.5m spacing
ula = arrays.UniformLinearArray(m=8, dd=0.5)
# Create a complex stochastic signal
source = signals.ComplexStochasticSignal(fc=3e8)
# Simulate the received data
received_data = ula.received_signal(
signal=source, snr=0, nsamples=1000, angle_incidence=np.array([0, 30]), unit="deg"
)
# Calculate the MUSIC spectrum
angle_grids = np.arange(-90, 90, 1)
spectrum = music(
received_data=received_data,
num_signal=2,
array=ula,
signal_fre=3e8,
angle_grids=angle_grids,
unit="deg",
)
# Plot the spatial spectrum
plot_spatial_spectrum(
spectrum=spectrum,
ground_truth=np.array([0, 30]),
angle_grids=angle_grids,
num_signal=2,
)
You will a get a figure like this:
Check examples for for more details on how to use it.
You can see more plot results of the algorithm in the Showcase.
What's implemented
Array Structures
- Uniform Linear Array (support array position error and mutual coupling error)
- Uniform Circular Array
Signal Models
- Narrowband
- ComplexStochasticSignal: The amplitude of signals at each sampling point is a complex random variable.
- RandomFreqSignal: Signals transmitted by different sources have different intermediate frequencies (support coherent mode).
- Broadband
- ChirpSignal: Chirp signals with different chirp bandwidths within the sampling period.
- MultiFreqSignal: Broadband signals formed by the superposition of multiple single-frequency signals within a certain frequency band.
- MixedSignal: Narrorband and broadband mixed signal
Algorithms
- DOA estimation for ULA
- MUSIC
- ESPRIT
- Root-MUSIC
- OMP
- $l_1$-SVD
- DOA estimation for URA
- URA-MUSIC
- URA-ESPRIT
- DOA estimation for UCA
- UCA-RB-MUSIC
- UCA-ESPRIT
- Broadband/Wideband DOA estimation
- iMUSIC
- CSSM
- TOPS
- Coherent DOA estimation
- smoothed-MUSIC
Showcase
License
This project is licensed under the MIT License - see the LICENSE file for details.
Metadata
Release files for doa-py 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| doa_py-0.5.0.tar.gz | 22.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| doa_py-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 47.9 kB
Release files / doa_py-0.5.0.tar.gz
| Download URL | doa_py-0.5.0.tar.gz |
|---|---|
| Size | 22.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2cae8674bdbd1e3900491fb2b8259a6e58927a03b7b76b08a5349b07acadcd51
|
|
BLAKE2b-256 checksum How to use checksums |
3b911f5bbbd51258202007ee820eb0b4f910b116845741cc249226cfa78b8e80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Release files / doa_py-0.5.0-py3-none-any.whl
| Download URL | doa_py-0.5.0-py3-none-any.whl |
|---|---|
| Size | 25.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
62fa754761b98f95cb1b2c4bd4ad7998fc176d69c93c0d122c21d0d4babbfbf4
|
|
BLAKE2b-256 checksum How to use checksums |
0a5e8e21864f22a3b01c782a98d98a255bcc36296258e2f4f8410e400f2ccc47
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|