If you have any questions or comments about RxCS software, you are very warmly welcome to contact Jacek Pierzchlewski on jacek [ at ] pierzchlewski . com. .

Table of contents:

  1. What is RxCS?
  2. Download and Contribute
  3. What is inside? Directory structure
  4. What is inside? Implemented modules
  5. Examples

1. What is RxCS?

RxCS is a toolbox dedicated to simulation of compressed sensing solutions in radio receivers. It consists of modules which are divided into five groups: signal generators, signal acquisition, compressed sensing processing, signal analysis and auxiliary modules. All of the modules may be used separately or with cooperation with other modules.

Go to Examples section for illustrative examples of using RxCS.

Programming language

The toolbox is written almost entirely in Python, however you may also found C language here and there.


The toolbox works well with Linux and OS X operating systems.


RxCS requires Numpy and Scipy to work. It is also recommented to install Cvxopt.


Most of the modules in RxCS are licensed with FreeBSD license, few are published under GPL license.

Current version

Currently (March 2017) RxCS v. 2.0 is available.

2. Download and contribute:

Please download the newest version of the RxCS (zipped) directly from GitHub

You can contribute to the project using GitHub. Please go to the project’s website:

3. What is inside? Directory structure

The first two levels of the directory structure of RxCS are shown in image below. All the RxCS modules are hidden in rxcs\ subdirectory, which has four subdirectories with fours basic groups of modules.


4. What is inside? Implemented modules

List of currently implemented modules (v 2.0) is as follows:

  • Signal generators
    1. gaussNoise.py – random Gaussian Noise Generator
    2. gaussNoise2.py – random Gaussian Noise Generator (type 2)
    3. gaussNoise3.py – random Gaussian Noise Generator (type 3)
    4. randMult.py – random Multitone Signal Generator
    5. powerRegulator.py – power regulator
    6. sparseVector.py – sparse vectors generator
    7. oversampler.py – oversampler
    8. LNA.py – Low-noise nonlinear amplifier
    • radio/ – radio modules:
      1. upconvert.py – single branch upconverter

  • Acquisiton modules
    1. nonuniANGIE.py – nonuniform sampler with an ANGIE sampling scheme
    2. nonuniARS.py – nonuniform sampler with an ARS sampling scheme
    3. nonuniJS.py – nonuniform sampler with an JS sampling scheme
    4. nonuniExtern.py – nonuniform sampler with external sampling scheme
    5. uniform.py – uniform sampler
    6. satur.py – saturation block

  • CS modules
    1. finalRecon.py – final signals reconstruction module
    2. makeTheta.py – module which prepares Theta matrices based on observation and dictionary matrices
    • L1/ – L1 based reconstruction modules:
      1. cvxoptL1.py – L1-optimisation signal reconstruction module using cvxopt .
      2. irlsL1.py – L1-optimisation signal reconstruction module using Iteratively Reweighted Least Squares (IRLS) algorithm
    • dict/ – dictionaries:
      1. IDFT.py – oversampled Inverse Discrete Fourier Transform (IDFT) dictionary.
      2. IDHT.py – oversampled Inverse Discrete Hartley Transform (IDHT) dictionary.

  • Signal evaluation
    1. SNR.py – SNR evaluation of the reconstructed signal

  • Auxiliary modules
    1. aldkrlsL2.py – L2 solver which uses KRLS algorithm
    2. parExp.py – multi CPU wrapper
    • krls – kernel recursive least squares modules:
      1. aldkrls.py – Kernel Recursive Least Squares algorithm with Approximate Linear Dependency criterion
      2. kernel.py – implementation of kernels used by KRLS algorithm

5. Examples

Page last updated: 20th March 2017 (by Jacek)