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 that was not included in the provided software package. If, however, you notice a bug in our code, please be so kind to contact the author.

The software 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 on 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.

Iterative detection and decoding in multiple-input multiple-output (MIMO) wireless systems is known to achieve near-capacity performance at manageable computational complexity. The soft-input soft-output (SISO) single tree-search (STS) sphere decoding (SD) algorithm and the SISO minimum mean-square error (MMSE) parallel interference cancellation (PIC) algorithm are two efficient methods for iterative detection and decoding in MIMO wireless systems. The SISO STS-SD is a max-log optimal method that 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 SISO MMSE-PIC algorithm is a low-complexity (but sub-optimal) detection method employing parallel interference cancellation (PIC) and minimum mean-square error (MMSE) filtering. The algorithm exhibits very low computational complexity, which enables the efficient implementation in hardware. The zip-package provided here contains code of both algorithms 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 publications:

C. Studer and H. Bölcskei, "Soft-Input Soft-Output Single Tree-Search Sphere Decoding," IEEE Transactions on Information Theory, Vol. 56, No. 10, pp. 4827–4842, Oct. 2010
C. Studer, A. Burg, and H. Bölcskei, "Soft-Output Sphere Decoding: Algorithms and VLSI Implementation," IEEE Journal on Selected Areas in Communications, Vol. 26, No. 2, pp. 290–300, Feb. 2008 (the STS-SD algorithm is part of MATLAB’s Communications System Toolbox)
C. Studer, "Iterative MIMO Decoding: Algorithm and VLSI Implementation Aspects," Ph.D. dissertation, Department of Information Technology and Electrical Engineering, ETH Zurich, Zurich, Switzerland, Series in Microelectronics, Vol. 202, Hartung-Gorre Verlag Konstanz, July 2009, (ETH medal for doctoral dissertation)

Details on the SISO MMSE-PIC algorithm and corresponding VLSI implementations can be found in the following papers:

C. Studer, S. Fateh, and D. Seethaler, "ASIC Implementation of Soft-Input Soft-Output MIMO Detection Using Parallel Interference Cancellation," IEEE Journal of Solid-State Circuits, Vol. 46, No. 7, pp. 1754–1765, July 2011 (invited journal article)
C. Studer, S. Fateh, and D. Seethaler, "A 757 Mb/s 1.5mm2 90nm CMOS Soft-Input Soft-Output MIMO Detector for IEEE 802.11n," Proc. IEEE European Solid State Circuits Conference (ESSCIRC), pp. 520–533, Sept. 2010

Package details

The software package contains the code of the SISO STS-SD and the SISO MMSE-PIC algorithms 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 C. Studer, and is available for free trial, non-commercial research or education 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 contact the author. If you are using the code or parts thereof for your scientific work, you must to provide a reference to this website or at least one of the publications listed above.


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


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. Have fun!