A comprehensive physical layer simulator for OFDM-MIMO with machine learning capabilities.
Project description
A Quick Primer on Machine Learning in Wireless Communications
DeepWireless is a Python library that allows its user to generate statistics of a MIMO-OFDM wireless channel and both QAM and QPSK symbols (Gray coded). This library implements what is discussed in my tutorial "A Quick Primer on Machine Learning in Wireless Communications". Because this tutorial is intended for a single OFDM symbol and a single user, the code can run on CPUs instead of expensive GPU environments.
MIMO precoding is done via singular value decomposition (SVD) or SVD plus waterfilling for spatial multiplexing, identity precoding, and beamforming. Grid of beams beamforming (i.e., through the use of a discrete Fourier transform (DFT) codebook as a precoder) is also implemented.
Several fading channels are implemented: AWGN, Ricean (and Rayleigh), and 3GPP CDL-A, CDL-C, and CDL-E channels. The channels are normalized such that their power gain is equal to one. The large scale gain and shadow fading are implemented per OFDM subcarrier. There are several models for the large scale gain: (1) free-space pathloss and (2) 3GPP UMa and RMi models. Support for DeepMIMO has also been added in this most recent version.
Instead of random bit generation for payload, an option to upload 8-bit 32x32 bitmap pictures is now introduced with a plot showing the impact of the channel onto the bitmap.
Several channel operations are performed: pilot-aided channel estimation, channel equalization, and symbol detection.
Channel estimation is performed through the use of least squares estimation and the linear minimum mean square error (LMMSE) formula. Perfect channel estimation also exists.
Channel state information compression using autoencoders is also implemented.
Channel equalization is performed through the choices of zero forcing and MMSE equalizers.
Symbol detection is performed through four different algorithms: (1) maximum likelihood (2) ensemble learners (random forest) (3) unsupervised learning, and (4) deep feedforward neural networks.
Symbol quantization through truncation is also implemented as an optional step.
Several deep learners are also implemented to facilitate cases as outlined in the reference below. These deep learner implementations are (1) deep forward neural network (2) long short-term memory deep neural network, and (3) convolutional neural network.
Statistics reported are the channel estimation mean squared error, transmit signal to noise ratio, receive signal to interference plus noise ratio pre- and post-equalization, transmit Eb/N0, receive Eb/N0, bit error rate, pathloss, received signal power, compression loss, and block error rate (BLER). For BLER, a cyclic redundancy check (CRC) generator polynomial is necessary. No forward error correction is implemented yet in this simulator.
Citation
If you use this library (or any code segments thereof) in a scientific publication, we would appreciate citations to the this preprint to keep track of the impact.
@misc{mismar2023quick, title={A Quick Primer on Machine Learning in Wireless Communications}, author={Faris B. Mismar}, year={2023}, month=dec, eprint={2312.17713}, archivePrefix={arXiv}, primaryClass={cs.NI}}
Versioning
| Version | Date | Description |
|---|---|---|
| 0.1 | 2022-01-02 | First release. |
| 0.2 | 2023-12-28 | Implementation of Primer release of 2023-12-28. |
| 0.3 | 2024-01-03 | Major revision and error fixes. |
| 0.4 | 2024-01-13 | More features. |
| 0.5 | 2024-07-29 | More revisions and 3gpp CDL-C and CDL-E channels. |
| 0.6 | 2024-10-11 | Simplified implementation and more features. |
| 0.61 | 2024-10-15 | Implementation of Primer release of 2024-10-15. |
| 0.7 | 2024-12-07 | Final release for Primer 2024-12-07. |
| 0.8 | 2025-03-19 | Minor feature improvements. |
| 0.9.3 | 2025-05-15 | Class-based implementation, support for more channels and more pathloss models. |
Project details
Release history Release notifications | RSS feed
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 deepwireless-0.9.3.tar.gz.
File metadata
- Download URL: deepwireless-0.9.3.tar.gz
- Upload date:
- Size: 35.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23059184ffa7015619f6d007e115bcd8b7409d302effd793aab806ab8e6c9a34
|
|
| MD5 |
9c26af606bc6122472158e6671367753
|
|
| BLAKE2b-256 |
13d5c166fa77895165848ae80178b9a5d32c45cd8fd783e1727ca0bc37eb33d1
|
File details
Details for the file deepwireless-0.9.3-py3-none-any.whl.
File metadata
- Download URL: deepwireless-0.9.3-py3-none-any.whl
- Upload date:
- Size: 23.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14e5a853709c615de76cc3005812c53c355f2e4029eaf7ee4aef56388da2188b
|
|
| MD5 |
96bcdee5bee855e41c97239605bfc23c
|
|
| BLAKE2b-256 |
71452d0745bec691514692fe8ca2717c27a16ac9456db258de869bc645c2095f
|