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
A feedback on the codes is highly appreciated.
The other software is available upon a registration.
If you do not receive any e-mail after your registration, please send
an e-mail and I will respond immediately and send you the requested
The list of the downloadable software
Estimating the Mutual Information
Approximate Joint Diagonalization Algorithms
Blind Source Separation (BSS) Algorithms: WASOBI and BGSEP
Removing Artifacts in (Neonatal) EEG Data
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.
Algorithms COMBI and MULTI-COMBI - BSS algorithms based on
combination of the signal non-Gaussianity and the spectral diversity
Generator of a Generalized Gaussian distributed matrices
FicaCPLX - A BSS algorithm for separating complex-valued signals
based on non-Gaussianity, with optimalized suppression of the additive
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
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
provided by Bill Baxter.
The code can be used for application
in pairing of independent signal components separated by blind
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
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.
4. WASOBI and BGSEP
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
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
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).