Page 230 - MATLAB Recipes for Earth Sciences
P. 230

226                                              9 Multivariate Statistics

            they could still can be dependent, i.e., nonlinear correlation remains. The
            independent component analysis (ICA) was developed for the purpose of
            investigating such data. It separates mixed signals into independent signals,
            which are then nonlinearly uncorrelated. Fast ICA algorithms use a crite-
            rion which estimates how gaussian distributed the joint distribution of the
            independent components is. The less gaussian this distribution is, the more
            independent the individual components are.
               According to the model, n independent signals x(t) are linearly mixed in
            m measurements.





            and we are interested in the source signals s  and in the mixing matrix A.
                                                    i
            We can, for example, imagine that we are on a party and a lot of people
            talk independently with others. We hear a mixing of these talks and perhaps
            cannot distinguish the single talks. Now we could install some microphones
            and use these measurements in order to separate the single conversations.
            Hence, this dilemma is also called the cocktail party problem. Its correct
            term is blind source separation that is given by





                    T
            where W  is the separation matrix in order to reverse the mixing and get
            the original signals. Let us consider a mixing of three signals s , s  and s
                                                                     1  2     3

            and their separation using PCA and ICA. At first we create three periodic
            signals
               clear
               i = (1:0.01:10 * pi)';
               [dummy index] = sort(sin(i));
               s1(index,1) = i/31; s1 = s1 - mean(s1);
               s2 = abs(cos(1.89*i)); s2 = s2 - mean(s2);
               s3 = sin(3.43*i);
               subplot(3,2,1), plot(s1), ylabel('s_1'), title('Raw signals')
               subplot(3,2,3), plot(s2), ylabel('s_2')
               subplot(3,2,5), plot(s3), ylabel('s_3')
            Now we mix these signals and add some observational noise. We get a three-
            column vector x which corresponds to our measurement (Fig. 9.5).

               randn('state',1);
   225   226   227   228   229   230   231   232   233   234   235