DOA estimation algorithms implemented in Python
Project description
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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file doa_py-0.5.0.tar.gz.
File metadata
- Download URL: doa_py-0.5.0.tar.gz
- Upload date:
- Size: 22.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2cae8674bdbd1e3900491fb2b8259a6e58927a03b7b76b08a5349b07acadcd51
|
|
| MD5 |
04eca3a36c5440cf17f1bd2c6a74f05b
|
|
| BLAKE2b-256 |
3b911f5bbbd51258202007ee820eb0b4f910b116845741cc249226cfa78b8e80
|
File details
Details for the file doa_py-0.5.0-py3-none-any.whl.
File metadata
- Download URL: doa_py-0.5.0-py3-none-any.whl
- Upload date:
- Size: 25.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62fa754761b98f95cb1b2c4bd4ad7998fc176d69c93c0d122c21d0d4babbfbf4
|
|
| MD5 |
d883d61ffc5424f6592ffa773c5a8604
|
|
| BLAKE2b-256 |
0a5e8e21864f22a3b01c782a98d98a255bcc36296258e2f4f8410e400f2ccc47
|