Thomas Eriksson's publicly available software

All software on this page is free to use for any purpose (except IT++, which has its own licensing).
If you find it useful, I would be glad to be referenced.


GHz Centre

The GigaHertz Centre (GHz Centre) is a joint research and innovation centre between Chalmers University of Technology and industrial partners.
The mission of GHz Centre is to carry out collaborative leading research in selected high-frequency technologies and to bring the results from Chalmers to an industrial exploitation phase primarily through its company partners.
GHz Centre is part of the VINN Excellence Centre program run year 2007-2016 by the Swedish Governmental Agency for Innovation Systems (VINNOVA).
Some software related to my research in GHz Centre can be found here.

Digital predistortion

The power series quantizer (PSQ) [1]

The power series quantizer is a powerful memory-based vector quantizer. It can be shown [1] that most other memory based VQs (such as predictive quantization, finite-state quantization, etc.) are special cases of the PSQ. We believe that the PSQ is currently the best-performing memory-based algorithm in the literature, for the range of problems that it can solve (i.e., for a dimensionality and rate where the PSQ algorithm is not too complex).

: Encodes a vector x using a PSQ.
: Decodes an index i using a PSQ.
: Designs a PSQ from a database.

Time evolution in LPC spectrum coding [2]

Closest point search in lattices [3]

In [3], we analyze and compare several algorithms for finding the closest point in a lattice to an arbitrary point. Further, we describe how to implement the most efficient algorithm, the Schnorr-Euchner (1995) variation of the Pohst (1981) method.
: The closest point search algorithm (the DECODE algorithm from [3]). You can also download an example to test the algorithm here.


SPCLAB is a MATLAB tool to visualize, process and listen to speech signals.
SPCLAB home page


SPLIB is a signal processing library for C++. It should compile under most C++ compilers with support for templates. SPLIB is slightly biased towards processing of speech signals, but it also contains a lot of general signal processing classes and functions. The functions are written to be as similar to MATLAB as possible, with the same function names and parameters.
SPLIB is not developed any longer; it is replaced by IT++ (see below).
The library


IT++ is a C++ library of mathematical, signal processing, speech processing, and communications classes and functions. The origin of IT++ is an old unnamed signal processing library of mine, designed during my PhD studies in the early and mid 90's. The same unnamed library was also the origin of SPLIB above. Later, Tony Ottosson and Pål Frenger, also working at the department of information theory, took over the development and came up with the name IT++, from the name of the department we worked at. While departments come and go, IT++ got a life of its own, and has been developed into the library we see today.
IT++ home page

Miscannellous MATLAB programs

VQ training.
Expectation Maximization for training GMM's, diagonal covariances. Requires vqtrain.m to have a good initialization.
Expectation Maximization for training GMM's, full covariances. Requires vqtrain.m to have a good initialization.
Computes the likelihood of a vector using a GMM.
Computes Mel Frequency Cepstrum Coefficients (MFCC).
Estimation of the differential entropy of a database.
Estimation of the mutual information between two sources (databases). entropyestimate.m is required.


  1. Thomas Eriksson and Fredrik Nordén, "Memory-Based Vector Quantization of LSF Parameters by a Power Series Approximation," in IEEE Transactions on Audio, Speech and Language Processing, Vol. 15, pp 1146-1155, May 2007.
  2. Fredrik Nordén and Thomas Eriksson, "Time evolution in LPC spectrum coding," in IEEE Transactions on Audio, Speech and Language Processing, Vol. 12, No. 3, pp.290-301, May 2004.
  3. Erik Agrell, Thomas Eriksson, Alexander Vardy, Ken Zeger, "Closest point search in lattices," in IEEE Transactions on Information Theory, Vol. 48, pp 2201-2214, Aug 2002.

This page has been edited 51 times. The last modification was made by - thomases2 thomases2 on Sep 8, 2016 8:29 am