Soft-input soft-output single tree-search sphere decoding (SISO STS-SD)

The SISO STS-SD algorithm is an efficient method for iterative detection and decoding in multiple-input multiple-output (MIMO) wireless communication systems. The algorithm is based on sphere decoding (SD) and the single-tree search (STS) paradigm. The SISO STS-SD algorithm incorporates clipping of the extrinsic log-likelihood ratios (LLRs) into the tree-search, which results in significant complexity savings. In addition, LLR clipping allows to cover a large performance/complexity tradeoff by adjusting only a single parameter. The zip-package provided here contains code of the SISO STS-SD algorithm and a modular MIMO-OFDM simulator.
More information on the SISO STS-SD algorithm and on iterative MIMO detection and decoding can be found in the following papers:
  1. Soft-input soft-output single tree-search sphere decoding
    C. Studer and H. Bölcskei, IEEE Transactions on Information Theory, Vol. 56, No. 10, pp. 4827-4842, Oct. 2010.
  2. Soft-output sphere decoding: Algorithms and VLSI implementation
    C. Studer, A. Burg, and H. Bölcskei, IEEE Journal on Selected Areas in Communications, Vol. 26, No. 2, pp. 290-300, Feb. 2008.
  3. Iterative MIMO Decoding: Algorithms and VLSI Implementation Aspects
    C. Studer, Ph.D. dissertation, ETH Zurich, Switzerland, Series in Microelectronics, vol. 202, Hartung-Gorre Verlag Konstanz, June 2009.

Package details

The software package contains the code of the SISO STS-SD algorithm written in Matlab as well as a complete Monte-Carlo MIMO-OFDM simulation environment supporting iterative detection and decoding. The simulator is set up such that you can add your own extensions (e.g., algorithms, channel models, etc.) and supports high-throughput computing using Condor.
The code is written by Dr. Christoph Studer and is available for free trial, non-commercial research purposes, and for non-profit organizations. If you plan on using the code or parts thereof for commercial purposes or if you intend to re-distribute the code or parts thereof, you must get permission from Dr. Christoph Studer. If you are using the code or parts thereof for your scientific work, please include a reference to this website and the following paper:

Soft-input soft-output single tree-search sphere decoding
C. Studer and H. Bölcskei, IEEE Transactions on Information Theory, Vol. 56, No. 10, pp. 4827-4842, Oct. 2010.


The package uses Matlab's communications toolbox (only for poly2trellis.m).

Important Information

If you are thinking of contacting us, please do not e-mail the author to ask for download instructions, installation guidelines, or the toolbox itself. The code itself is well-documented and the package contains a README.txt file providing the essential information about the software. Note that we will NOT help to debug user-generated code not included in the provided package. If, however, you notice a bug in our code, please be so kind to contact Dr. Christoph Studer.
The package is supplied "as is", without any accompanying support services, maintenance, or future updates. We make no warranties, explicit or implicit, that the software contained in this package is free of error or that it will meet your requirements for any particular application. It should not be relied upon for any purpose where incorrect results could result in loss of property, personal injury, liability, or whatsoever. If you do use our software for any such purpose, it is at your own risk. The authors disclaim all liability of any kind, either direct or consequential, resulting from your use of these programs.


If you agree with the conditions and regulations above, you may download the package here. The zip file (1.4MB) contains Matlab .m files as well as Matlab .mex files. The .mex files have been compiled into binaries for the most common architectures/OS. If, however, your architecture/OS is not supported, please use the .c files provided in the package to compile the code yourself.

Matlab Communication Toolbox

The soft-output single tree-search (STS) sphere decoder is part of Matlab's communication toolbox. Note, however, that Mathwork’s implementation only supports soft-output detection and computes *normalized* log-likelihood ratio (LLR) values; the latter implies that the outputs need to be scaled by the inverse of the noise variance N0 for proper functionality with various channel decoders. The implementation provided on this website is able to perform soft-input soft-output (SISO) data detection and computes properly scaled max-log LLR values, which work with most channel decoders out-of-the-box.