Personal pages of PETR TICHAVSKÝ

This page offers a free download of matlab/C++ codes developed by Petr Tichavsky and his co-workers that are cited in his/their publications. We only ask for a registration of any user, using the codes for educational purposes only, and for properly citing of the papers/web page.
Exact location of the codes will be send to the interested users by automatically generated e-mail, containing (hopefully) all necessary details.
A feedback on the codes is highly appreciated.

Software for evaluation purposes (for a review process): tensor diagonalization algorithm for regular tensors TEDIA and for rank-deficient tensors TEDIA_RD
Software for numerical CP decomposition of difficult tensors: (1) constrained Levenberg-Marquardt algorithm (2) script for generating a tensor correspodning to the matrix multiplication (3) code that transformes a given exact-fit solution to a sparse exact fit solution A feedback on the codes is highly appreciated.

The other software is available upon a registration.

Registration If you do not receive any e-mail after your registration, please send me an e-mail and I will respond immediately and send you the requested codes.

The list of the downloadable software

  1. Estimating the Mutual Information
  2. Optimum Pairing
  3. Approximate Joint Diagonalization Algorithms
  4. Blind Source Separation (BSS) Algorithms: WASOBI and BGSEP
  5. Removing Artifacts in (Neonatal) EEG Data
  6. BARBI - A BSS algorithm based on the signal nonstationarity and the spectral diversity. AR1sep - specialized BSS algorithm for separating underdetermined mixtures of piecewise AR1 sources, published at ICASSP 2016.
  7. Algorithms COMBI and MULTI-COMBI - BSS algorithms based on combination of the signal non-Gaussianity and the spectral diversity
  8. Generator of a Generalized Gaussian distributed matrices
  9. FicaCPLX - A BSS algorithm for separating complex-valued signals based on non-Gaussianity, with optimalized suppression of the additive noise
  10. Tensor Factorization Algorithms & Application: PALS, PALSE - partitioned ALS algorithms for CP tensor decomposition, see IEEE Signal Processing Letters 2016. UDSEP, blind separation of undetermined mixtures of nonstationary sources

More detailed description of the software

1. Estimating the Mutual Information

Matlab code for estimating the mutual information of N independent observations of d random variables based on adaptive partitioning of the observation space.

2. Optimum Pairing

Matlab implementation of the Kuhn-Munkres algorithm for maximum matching in a bipartite graph published in the IEEE Signal Processing Letters in January 2004. A new version with augmented comments provided by Bill Baxter. The code can be used for application in pairing of independent signal components separated by blind techniques.

3. Approximate Joint Diagonalization Algorithms and Joint Block-Diagonalization Algorithms

This toolbox contains four approximate joint diagonalization algorithms. The first three are described in the paper P. Tichavsky and A. Yeredor, "Fast Approximate Joint Diagonalization Incorporating Weight Matrices", IEEE Tr. on Signal Processing, vol. 57, no.3, pp. 878-891, March 2009.
  • UWEDGE - Uniformly Weighted Exhaustive Diagonalization with Gauss itErations
  • WEDGE - Weighted Exhaustive Diagonalization with Gauss itErations (with user-provided weight matrices)
  • BG-WEDGE - it is WEDGE with special choice of the weight matrices that correspond to joint diagonalization of covariance matrices in blind source separation of Block-wise stationary Gaussian signals. It represents a fast alternative to the Pham's algorithm "jadiag".
  • UWEDGE_C - Complex version (version for complex-valued matrices and complex-valued mixing) of the algorithm UWEDGE
The next three algorithms serve for approximate joint block-diagonalization: they are described in the paper P. Tichavsky, Z. Koldovsky, "Algorithms for nonorthogonal approximate joint block-diagonalization", Proc. EUSIPCO 2012, Bucharest, Romania, August 27-31, 2012.


WASOBI serves for blind separation of instantaneous mixture of stationary random processes with spectral diversity. The algorithm is asymptotically optimum (attaining corresponding Cramer-Rao lower bound), if the original signals are Gaussian autoregressive random processes. The algorithm is built on approximate joint diagonalization of a set of time-lagged covariance matrices of the signals via WEDGE algorithm with specially selected weight matrices.
BGSEP is a BSS algorithm based on the signal nonstationarity This algorithm is used e.g. in the time-domain blind separation of convolutive mixtures by Koldovsky and Tichavsky. Basically, it computes sample covariance matrices of the multichannel signal on a partitioning to non-overlapping intervals of an equal size, and applies an algorithm for approximate joint diagonalization with appropriate weights (BGWEDGE).

5. Removal of Artifacts in EEG Data

This toolbox contains an algorithm related to the paper M. Zima, P.Tichavsky, K. Paul, and V. Krajca, ``Robust removal of short duration artifacts in long neonatal EEG recordings using wavelet enhanced ICA and adaptive combining of tentative reconstructions", Physiological Measurements 2012.
A short version was published as
P.Tichavsky, M. Zima, and V. Krajca, ``Automatic removal of sparse artifacts in electroencephalogram", Proc. Biosignals 2011, Rome, Italy, January 26-29, 2011, pp. 530-535.
Coded by Miroslav Zima and Petr Tichavsky, November 2011.

6. Algorithm BARBI.

BARBI= Block AR Blind Identification algorithm. It is a generalization of IWASOBI algorithm to multiple blocks. It includes, as special cases, alternative implementations of IWASOBI and BG_WEDGE.
See the paper
P. Tichavsky, A. Yeredor, and Z.Koldovsky, ``A Fast Asymptotically Efficient Algorithm for Blind Separation of a Linear Mixture of Block-Wise Stationary Autoregressive Processes", ICASSP 2009, Taipei, Taiwan, April 21-27, 2009, pp. 3133-3136

AR1sep = algorithm published as O. Sembera, P. Tichavsky and Z. Koldovsky, "Blind separation of underdetermined linear mixtures based on source nonstationarity and AR(1) modeling." , Shanghai, China, 2016.

7. Algorithms COMBI and MULTI-COMBI.

A matlab implementation of algorithms COMBI and MULTI-COMBI that are hybrid of algorithms of algorithm EFICA and WASOBI, utilizing strong features of both algorithms P. Tichavsky, Z. Koldovsky, A. Yeredor, G. Gomez-Herrero, and E. Doron, ``A Hybrid Technique for Blind Separation of Non-Gaussian and Time-Correlated Sources Using a Multicomponent Approach", IEEE Tr. Neural Networks, vol. 19, no. 3, pp. 421-430, March 2008.

8. Generator of generalized Gaussian distributed matrices

This simle utility serves to generate random matrices with i.i.d random variables with the generalized Gaussian distribution with zero mean, unit variance and shape parameter alpha. Method: numerical inversion of the corresponding probability distribution function at points that are uniformly distributed in [0,1].

9. Algorithm FicaCPLX

Algorithm FicaCPLX that is a variant of the algorithm FastICA for blind separation of complex-valued sources, implementing a new test of saddle points and an one-unit refinement for each component. As a reference, please cite Zbynek's and my paper presented at ICA'07 in London, see Publications.

10. Tensor Factorization Algorithms & Application

(1) Partitioned alternating least squares algorithm for canonical polyadic tensor decomposition, published in IEEE Signal Processing Letters in July 2016.
(2) Constrained Levenberg-Marquardt CP decomposition algorithm, specially suitable for decomposition of tensors representing small matrix multiplications, presented at TDA workshop in Leuven, Belgium, January 2016.
(3) UDSEP is a BSS algorithm aiming to separate mixtures of nonstationary signals where there are more sources than sensors. The algorithm was described in the paper Tichavsky, Z. Koldovsky, "Weight adjusted tensor method for blind separation of underdetermined mixtures of nonstationary sources", IEEE Transactions on Signal Processing, vol.59, no. 3, p. 1037-1047 (2011).