Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

zhiim/doa_py

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

116 Commits
116 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DOA_Py logo

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

ESPRIT

$l_1$-SVD

UCA-RB-MUSIC

License

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

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.