Skip to content
/ doa_py Public

DOA etimation algorithms implemented in Python for ULA, UCA and broadband/wideband DOA estimation

License

Notifications You must be signed in to change notification settings

zhiim/doa_py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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: music_spectrum

Check examples for more examples.

What's implemented

Array Structures

  • Uniform Linear Array (ULA)
  • Uniform Rectangular Array (URA, to be implemented)
  • Uniform Circular Array (UCA)

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 (IF).
  • 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.

Algorithms

  • DOA estimation for ULA
    • MUSIC
    • ESPRIT
    • Root-MUSIC
    • OMP
    • l1-SVD
  • DOA estimation for URA
    • URA-MUSIC
    • URA-ESPRIT
  • DOA estimation for UCA
    • UCA-RB-MUSIC
    • UCA-ESPRIT
  • Broadband/Wideband DOA estimation
    • ISSM
    • CSSM
    • TOPS

License

This project is licensed under the MIT License - see the LICENSE file for details.