Giter Club home page Giter Club logo

nonlinear-ofdm's Introduction

Belief-propagation Receivers for Nonlinear OFDM

This is a communication system simulation code for nonlinearly distorted OFDM with receivers based on generalized approximate message passing algorithm. For more details, see Ref [1, 2].

Getting Started

This simulation code relies on Armadillo (C++ library for linear algebra & scientific computing). Other than that there are no external dependencies.

Prerequisites

Firstly, you need to install Armadillo C++ library. You can download a copy of Armadillo C++ library from the official web-site (http://arma.sourceforge.net/), or you can use pre-built Armadillo packages provided by many Linux-based operating systems. Personally, I use Visual Studio 2019 and install Armadillo via vcpkg package manager (https://github.com/Microsoft/vcpkg).

Running the simulation

The principal way to run simulation is via command line interface with simulation parameters specified in cfg.txt file.

Simulation parameters

The parameters that can be specified in cfg.txt file are given in the table below:

Parameter Description
N the number of subcarriers in oversampled signal
Nu the number of nonzero subcarriers (i.e., oversampling factor M=N/Nu)
I_max the maximum number of iterations
G0 the input signal scaling factor
s_scale the noise variance scaling factor
B the damping factor
rand_seed the random seed
EbNo the signal-to-noise ratio per bit (array, e.g. 7.75 8.0 8.25)
L_SNR the number of OFDM symbols to simulate per EbNo (array)
qam_order the QAM modulation order (supported: 4, 16, 64)
enable_multipath_channel set this value to 1 to simulate Rayleigh block-fading channel
Channel taps the number of channel taps
Channel delay spread the channel RMS delay-spread (normalized)
enable_oob_filtering_tx set this value to 1 to enable out-of-band filtering in the transmitter
enable_oob_filtering_rx set this value to 1 to enable out-of-band filtering in the receiver
post_correction set this value to 1 to enable 1-bit correction post-processing

Example configuration file:

N = 16384
Nu = 4096
I_max = 75
G0 = 0.0
s_scale = 0.71
B = 0.875
rand_seed = 12345
EbNo =  7.75 8.0 8.25 
L_SNR = 1000 1000 1000
qam_order = 16
enable_multipath_channel = 0
enable_oob_filtering_tx = 0
enable_oob_filtering_rx = 0
post_correction = 1

Getting results

The simulation results are stored in:

  • EbNo.txt (all simulated EbNo values)
  • BER.txt (the BER result for each EbNo value)
  • FER.txt (the FER result for each EbNo value)
  • log.txt (all the output you see on the screen during simulation)

References

  1. S. Zhidkov and R.Dinis “Belief Propagation Receivers for Near-Optimal Detection of Nonlinearly Distorted OFDM Signals,” 2019 IEEE 89th Vehicular Technology Conference (VTC2019-Spring), May 2019 Download
  2. S. Zhidkov, "Orthogonal transform multiplexing with memoryless nonlinearity: a possible alternative to traditional coded-modulation schemes,“ in Proc. 9th International Congress on Ultra Modern Telecommunications and Control Systems (ICUMT-2017), Munich, Germany, November, 2017 Download

Authors

License

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

nonlinear-ofdm's People

Contributors

szhidkov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

nonlinear-ofdm's Issues

Incomplete code

The code is incomplete, first, some template bugs are present.
The results are the same for linea and non-linear cases, with no changes.
I hope the complete version of the code will be available.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.