IT++

From Wikipedia, the free encyclopedia

IT++ is a C++ library composed of classes and functions for linear algebra (matrices and vectors), signal processing and telecommunication systems. It can also be used in areas such as machine learning and pattern recognition.

Templated vector and matrix classes are the core of the IT++ library, making its functionality similar to that of MATLAB and GNU Octave.

IT++ makes an extensive use of existing open source libraries (but not only) for increased functionality, speed and accuracy. In particular BLAS, LAPACK, ATLAS and FFTW libraries can be used.

Contents

[edit] History

The IT++ library originates from the former department of Information Theory at the Chalmers University of Technology, Gothenburg, Sweden. Because the library is coded in C++, the name IT++ seemed like a good idea at the time. While departments come and go, IT++ has developed a life of its' own and is now released under the terms of the GNU General Public License (GPL).

[edit] Features

A short list of the main features of IT++ is given below sorted in different categories.

[edit] Programming features

  • templated array and stack container classes
  • command line and file argument parser
  • timing functions and classes

[edit] Basic mathematical features

  • templated vector and matrix classes
  • sparse vector and matrix classes
  • elementary functions on vectors and matrices
  • matrix decompositions such as eigenvalue, Cholesky, LU, Schur, SVD, and QR
  • solving linear system of equations (including over- and underdetermined)
  • random number generation (Mersenne Twister generator)
  • binary and Galois types (scalar, vector and matrix)
  • integration of 1-dimensional functions
  • unconditional nonlinear optimization (Quasi-Newton search)
  • statistics class

[edit] Signal processing

  • filter functions and classes
  • frequency domain filtering
  • FFT, DFT, DCT, and Hadamard transforms
  • time and frequency domain windows
  • evaluating and finding roots of polynomials (and inverse operations)
  • filter design functions
  • fast independent component analysis (fast ICA)

[edit] Communications

  • modulators (BPSK, PSK, PAM, QAM)
  • vector modulators (e.g. for OFDM and MIMO)
  • OFDM and CDMA modulators
  • pulse shaping filters (including RC and RRC)
  • binary symmetric (BSC) and additive white Gaussian Noise (AWGN) channels
  • multipath fading channels (both frequency-flat and frequency-selective)
  • COST 207, COST 257, and ITU channel models
  • Hamming, Extended Golay, and CRC codes
  • BCH and Reed-Solomon codes
  • convolutional and punctured convolutional codes
  • recursive convolutional codes
  • turbo codes
  • interleavers

[edit] Protocol simulation

  • event-based simulation classes
  • signal and slots for simplified syntax
  • TCP clients and servers
  • Selective Repeat ARQ
  • queue classes
  • packet generators

[edit] Source coding

  • Scalar Quantizer (SQ) and Vector Quantizer (VQ) classes and functions for training of these
  • LPC, LSF, and cepstrum parameter calculation for speech processing
  • Gaussian Mixture Modeling (GMM)
  • reading and saving several different audio file formats
  • reading and saving images in PNM format

[edit] Other features

  • binary file format for most built in IT++ types
  • fixed-point scalar, vector and matrix types


[edit] See also

[edit] External links