classical-doa


Nameclassical-doa JSON
Version 1.3.2 PyPI version JSON
download
home_pagehttps://github.com/zhiim/classical_doa
SummaryClassical DOA estimation algorithms implemented in Python
upload_time2024-10-05 11:12:04
maintainerNone
docs_urlNone
authorQian Xu
requires_pythonNone
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Moved to [doa_py](https://github.com/zhiim/doa_py)

# Classical DOA

Classical DOA Estimation algorithms implemented in Python.

## Getting Started

### Installation

```bash
pip install classical_doa
```

or install from source

```bash
git clone https://github.com/zhiim/classical_doa.git
cd classical_doa
pip install .
```

### Usage

A sample example of DOA estimation using MUSIC algorithm.

```python
import numpy as np

from classical_doa import arrays, signals
from classical_doa.algorithm import music
from classical_doa.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](https://github.com/zhiim/classical_doa/blob/master/pics/music_spectrum.svg)

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
- Broadband  
  ChirpSignal
  MultiCarrierSignal

### Algorithms

- ULA
  - [x] MUSIC
  - [x] ESPRIT
  - [x] Root-MUSIC
  - [x] OMP
  - [x] l1-SVD
- URA
  - [ ] URA-MUSIC
  - [ ] URA-ESPRIT
- UCA
  - [x] UCA-RB-MUSIC
  - [x] UCA-ESPRIT
- Broadband
  - [x] ISSM
  - [x] CSSM
  - [x] TOPS

## License

This project is licensed under the [MIT](LICENSE) License - see the LICENSE file for details.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/zhiim/classical_doa",
    "name": "classical-doa",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": null,
    "author": "Qian Xu",
    "author_email": "xuq3196@outlook.com",
    "download_url": "https://files.pythonhosted.org/packages/8c/d5/8e9d2fa683622a24a651e78fbe76a16fedc23ca4de89aab4c937b8401b6d/classical_doa-1.3.2.tar.gz",
    "platform": null,
    "description": "# Moved to [doa_py](https://github.com/zhiim/doa_py)\r\n\r\n# Classical DOA\r\n\r\nClassical DOA Estimation algorithms implemented in Python.\r\n\r\n## Getting Started\r\n\r\n### Installation\r\n\r\n```bash\r\npip install classical_doa\r\n```\r\n\r\nor install from source\r\n\r\n```bash\r\ngit clone https://github.com/zhiim/classical_doa.git\r\ncd classical_doa\r\npip install .\r\n```\r\n\r\n### Usage\r\n\r\nA sample example of DOA estimation using MUSIC algorithm.\r\n\r\n```python\r\nimport numpy as np\r\n\r\nfrom classical_doa import arrays, signals\r\nfrom classical_doa.algorithm import music\r\nfrom classical_doa.plot import plot_spatial_spectrum\r\n\r\n# Create a 8-element ULA with 0.5m spacing\r\nula = arrays.UniformLinearArray(m=8, dd=0.5)\r\n# Create a complex stochastic signal\r\nsource = signals.ComplexStochasticSignal(fc=3e8)\r\n\r\n# Simulate the received data\r\nreceived_data = ula.received_signal(\r\n    signal=source, snr=0, nsamples=1000, angle_incidence=np.array([0, 30]), unit=\"deg\"\r\n)\r\n\r\n# Calculate the MUSIC spectrum\r\nangle_grids = np.arange(-90, 90, 1)\r\nspectrum = music(\r\n    received_data=received_data,\r\n    num_signal=2,\r\n    array=ula,\r\n    signal_fre=3e8,\r\n    angle_grids=angle_grids,\r\n    unit=\"deg\",\r\n)\r\n\r\n# Plot the spatial spectrum\r\nplot_spatial_spectrum(\r\n    spectrum=spectrum,\r\n    ground_truth=np.array([0, 30]),\r\n    angle_grids=angle_grids,\r\n    num_signal=2,\r\n)\r\n```\r\n\r\nYou will a get a figure like this:\r\n![music_spectrum](https://github.com/zhiim/classical_doa/blob/master/pics/music_spectrum.svg)\r\n\r\nCheck `examples` for more examples.\r\n\r\n## What's implemented\r\n\r\n### Array Structures\r\n\r\n- Uniform Linear Array (ULA)\r\n- Uniform Rectangular Array (URA, to be implemented)\r\n- Uniform Circular Array (UCA)\r\n\r\n### Signal Models\r\n\r\n- Narrowband  \r\n  ComplexStochasticSignal\r\n- Broadband  \r\n  ChirpSignal\r\n  MultiCarrierSignal\r\n\r\n### Algorithms\r\n\r\n- ULA\r\n  - [x] MUSIC\r\n  - [x] ESPRIT\r\n  - [x] Root-MUSIC\r\n  - [x] OMP\r\n  - [x] l1-SVD\r\n- URA\r\n  - [ ] URA-MUSIC\r\n  - [ ] URA-ESPRIT\r\n- UCA\r\n  - [x] UCA-RB-MUSIC\r\n  - [x] UCA-ESPRIT\r\n- Broadband\r\n  - [x] ISSM\r\n  - [x] CSSM\r\n  - [x] TOPS\r\n\r\n## License\r\n\r\nThis project is licensed under the [MIT](LICENSE) License - see the LICENSE file for details.\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Classical DOA estimation algorithms implemented in Python",
    "version": "1.3.2",
    "project_urls": {
        "Homepage": "https://github.com/zhiim/classical_doa"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8cd58e9d2fa683622a24a651e78fbe76a16fedc23ca4de89aab4c937b8401b6d",
                "md5": "65835cc846e77271c929f4e53b2d88d5",
                "sha256": "0fcde4d3f16d65cd1507bc4cb3729e8cf34e3458365aa216d39dbe1d9f5b6487"
            },
            "downloads": -1,
            "filename": "classical_doa-1.3.2.tar.gz",
            "has_sig": false,
            "md5_digest": "65835cc846e77271c929f4e53b2d88d5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 14867,
            "upload_time": "2024-10-05T11:12:04",
            "upload_time_iso_8601": "2024-10-05T11:12:04.645600Z",
            "url": "https://files.pythonhosted.org/packages/8c/d5/8e9d2fa683622a24a651e78fbe76a16fedc23ca4de89aab4c937b8401b6d/classical_doa-1.3.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-05 11:12:04",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "zhiim",
    "github_project": "classical_doa",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "classical-doa"
}
        
Elapsed time: 1.05022s