The Pearson-ICA package is Copyright (c) Helsinki University of Technology,
Signal Processing Laboratory,
Jan Eriksson, Juha Karvanen, and Visa Koivunen.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Version: 1.1
Version date: September 25, 2000

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Description
===========

This package provides the Matlab (5.x) functions needed for the use of the
Pearson-ICA algorithm as described in


  Karvanen, J.,Eriksson, J., and Koivunen, V.:
  "Pearson System Based Method for Blind Separation",
  Proceedings of Second International Workshop on
  Independent Component Analysis and Blind Signal Separation,
  Helsinki 2000, pp. 585--590

The algorithm is proposed to solve  the standard noiseless linear 
ICA problem, i.e. the ICA model is Y=AS, where the number of sources
s_i is equal to the number of observations y_i.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Installation: Just put all files to a directory along Matlab's search path.
============

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Quick use: Type pearson_ica_demo for a demonstration.
=========

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Use: 
=== 

1) Pearson-ICA algorithm
~~~~~~~~~~~~~~~~~~~~~~~~

Suppose you have the ICA mixture in the matrix `mixedsig', where
the different rows correspond to the different outputs. Then

estimatedsig=pearson_ica(mixedsig)

gives the estimated independent components as the rows of the
matrix `estimatedsig'. The estimated mixing matrix A and
estimated separation matrix W are obtained as

[estimatedsig,A,W]=pearson_ica(mixedsig) 

There are also some optional parameters you can change:
   'epsilon'          Convergence criterion
   'maxNumIterations' Maximum number of iterations
   'borderBase',
   'borderSlope'      The border lines between the Pearson family and the 
                      tanh contrast. I.e. the Pearson is used if  
                      borderBase(1)+borderSlope(1)*skewness^2=<
                      kurtosis=<borderBase(2)+borderSlope(2)*skewness^2,
                      and the contrast tanh is used otherwise.

The default values for the parameters are epsilon=0.0001,
maxNumIterations=200, borderBase=[2.6 4], and borderSlope=[0 1].

Example: 
   estimated_sig=pearson_ica(mixedsig,'epsilon',0.00005,...
                   'maxNumIterations',50,'borderBase',[2.5 4])

2) Use of the functions and the list of files in the package
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

contents.m
  A brief description of all the files in the package.

fasticapearson.m
  Strip down of Hyvrinen's FastICA algorithm. This is the core function
  used by pearson_ica. Use pearson_ica to call this function.

  Syntax:      [ICs, A, W]=fasticapearson(mixedsig,epsilon,...
			     maxNumIterations,borderBase,borderSlope);

  Dependences: gbd_momentfit, gbd_score,
               pearson_momentfit, pearson_score

gbd_momentfit.m   
  Provides the gbd_momentfit function, which estimates the parameters of 
  a distribution from the Generalized Beta Distribution (GBD) using 
  the first four sample moments. Alternatively, the sample minimum and 
  maximum can be used instead of the sample mean and variance.
  
  Syntax:      gbd_momentfit(alpha3,alpha4,samplemin,samplemax,samplen)
               gbd_momentfit(alpha3,alpha4,alpha1,alpha2) 

  Examples:    beta=gbd_momentfit(0.254,2.526,57,580)
               beta=gbd_momentfit(0.254,2.526,-0.68,144,1000)

gbd_score.m 	      
  Provides the gbd_score function, which calculates values of the score 
  function and its derivative of a distribution from the Generalized 
  Beta Distribution (GBD).

  Syntax:      [phi,phi_prime]=gbd_score(x,beta)

  Example:     x=0:0.1:140;
               beta=gbd_momentfit(0.254,2.526,57,580);
               [phi,phi2]=gbd_score(x,beta);
               plot(x,phi);

gpl.txt
  The GNU General Public License

pearson_ica.m
  The main file for the Pearson-ICA algorithm. Look above for instructions
  how to call this function.

pearson_ica_demo.m
  A demonstration of the Pearson-ICA algorithm in work.

pearson_momentfit.m
  Estimates the parameters of the zero mean and unit
  variance Pearson system using the third and forth central moments.  

  Syntax:  pearson_momentfit(alpha3,alpha4)

  Example: b_normal=pearson_momentfit(0,3)

pearson_score.m
  Calculates values for the score function and its derivative of the 
  Pearson  system with parameters given in B=[b(1) b(2) b(3)].
  
  Syntax:  [phi,phi_prime]=pearson_score(x,B)

  Example: x=-3:0.01:3;
           b_normal=pearson_momentfit(0,3);
           [phi,phi_prime]=pearson_score(x,b_normal);
           plot(x,phi_prime);

readme.txt 
  This file.

% The end of readme.txt %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%