home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / C-SSP.ARJ / STCRMT.C < prev    next >
Encoding:
Text File  |  1984-08-28  |  1.8 KB  |  82 lines

  1.    stcrmt (lcd,lcv,lcc,n,m,d,v,c)
  2.  
  3.       /* this function computes the correlation matrix for
  4.          n series of data.                                   */
  5.  
  6.       int lcd,lcv,lcc,m,n;
  7.       float c[],d[],v[];
  8.  
  9.    {
  10.       int i,ilrc,ilrd,ij,j,jlrd,k,kj,lrv3,nli,nlj,nv2,nv3,nv4,
  11.           ki,klrc,jm1,ji,jy;
  12.       float s2,xm,xmxm1;
  13.       extern double sqrt();
  14.  
  15.       xm = m;
  16.       xmxm1 = xm * (xm - 1.);
  17.       jlrd = 0;
  18.  
  19.       for(j = 0; j <= n-1; j++)
  20.       {
  21.        nv2 = 1 + j * lcv;
  22.        nv3 = nv2 + 1;
  23.        nv4 = nv3 + 1;
  24.        jy = j * lcv;
  25.        v[jy] = 0.;
  26.        s2 = 0.;
  27.  
  28.        for(k = 0; k <= m-1; k++)
  29.        {
  30.         kj = jlrd + k * lcd;
  31.         v[jy] = v[jy] + d[kj];
  32.         s2 = s2 + d[kj] * d[kj];
  33.        }
  34.        jlrd = jlrd + 1;
  35.        v[nv2] = v[jy] / xm;
  36.        v[nv3] = (xm * s2 - v[jy] * v[jy]) / xmxm1;
  37.        v[nv4] = sqrt(v[nv3]);
  38.       }
  39.       lrv3 = 3;
  40.       ilrc = 0;
  41.       ilrd = 0;
  42.  
  43.       for(i = 0; i <= n-1; i++)
  44.       {
  45.        ij = ilrc + i * lcc;
  46.        jlrd = ilrd;
  47.        for(j = i; j <= n-1; j++)
  48.        {
  49.         nli = lrv3 + i * lcv;
  50.         nlj = lrv3 + j * lcv;
  51.         s2 = 0.;
  52.         for(k = 0; k <= m-1; k++)
  53.         {
  54.          ki = ilrd + k * lcd;
  55.          kj = jlrd + k * lcd;
  56.          s2 = s2 + d[ki] * d[kj];
  57.         }
  58.         jlrd = jlrd + 1;
  59.         c[ij] = (xm * s2 - v[i*lcv] * v[j*lcv])/(xmxm1 * v[nli] * v[nlj]);
  60.         ij = ij + 1;
  61.        }
  62.        ilrd = ilrd + 1;
  63.        ilrc = ilrc + 1;
  64.       }
  65.       klrc = 1;
  66.       for(j = 1; j <= n-1; j++)
  67.       {
  68.       jm1 = j - 1;
  69.       ji = j * lcc;
  70.       if(jm1 < 1) jm1 = 1;
  71.       for(i = 0; i <= jm1-1; i++)
  72.       {
  73.        ij = klrc + i * lcc;
  74.        c[ji] = c[ij];
  75.        ji = ji + 1;
  76.       }
  77.       klrc = klrc + 1;
  78.       }
  79.       for(k = 0; k <= n-1; k++)
  80.        v[k*lcv] = k + 1;
  81.    }
  82.