Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deepwireless-0.9.3.tar.gz (35.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

deepwireless-0.9.3-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

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

Hashes for deepwireless-0.9.3.tar.gz
Algorithm Hash digest
SHA256 23059184ffa7015619f6d007e115bcd8b7409d302effd793aab806ab8e6c9a34
MD5 9c26af606bc6122472158e6671367753
BLAKE2b-256 13d5c166fa77895165848ae80178b9a5d32c45cd8fd783e1727ca0bc37eb33d1

See more details on using hashes here.

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

Hashes for deepwireless-0.9.3-py3-none-any.whl
Algorithm Hash digest
SHA256 14e5a853709c615de76cc3005812c53c355f2e4029eaf7ee4aef56388da2188b
MD5 96bcdee5bee855e41c97239605bfc23c
BLAKE2b-256 71452d0745bec691514692fe8ca2717c27a16ac9456db258de869bc645c2095f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page