home *** CD-ROM | disk | FTP | other *** search
- tab2(x,y,bux,blx,nix,buy,bly,niy,lca,sumx,sumy,
- xm,ym,sdx,sdy,no,freq,iop)
-
- /* performs a two-way classification for two variables in */
- /* two observation arrays of the frequency, percent frequency */
- /* and other statistics (sjm,mean,standard deviation of each */
- /* variable) over given class intervals. */
-
- int iop,lca,nix,niy,no;
- float x[],y[],bux,blx,buy,bly,*sumx,*sumy,*xm,*ym,*sdx,*sdy,
- freq[];
-
- {
- int i,ij,j,k;
- float nixm1,niym1,sintx,sinty,ssx,ssy,tnix,tniy,testx,testy,tno;
- extern double fabs(),sqrt();
-
-
- for(j = 0; j <= nix-1; j++)
- {
- for(i = 0; i <= niy-1; i++)
- {
- ij = j + (i * lca);
- freq[ij] = 0.;
- }
- }
- tniy = niy;
- tnix = nix;
- sintx = fabs(bux - blx)/(tnix - 2.);
- sinty = fabs(buy - bly)/(tniy - 2.);
- tno = no;
- *sumx = 0.;
- *sumy = 0.;
- ssx = 0.;
- ssy = 0.;
-
- for(i = 0; i <= no-1; i++)
- {
- *sumx = *sumx + x[i];
- *sumy = *sumy + y[i];
- ssx = ssx + x[i]*x[i];
- ssy = ssy + y[i]*y[i];
- }
- *xm = *sumx/tno;
- *ym = *sumy/tno;
- *sdy = sqrt((ssy-(*sumy**sumy)/tno)/(tno - 1.));
- *sdx = sqrt((ssx -( *sumx**sumx)/tno)/(tno - 1.));
- niym1 = niy - 1;
- nixm1 = nix - 1;
-
- for( k = 0; k <= no-1; k++)
- {
- testx = blx;
- for(j = 0; j <= nixm1-1; j++)
- {
- testy = bly;
- ij = j;
- if (x[k] >= testx) goto txl;
-
- for(i = 1; i <= niym1; i++)
- {
- ij = j + (i-1) * lca;
- if (y[k] < testy) goto fij;
- testy = testy + sinty;
- }
- ij = j + (niy - 1) * lca;
- goto fij;
- txl: testx = testx + sintx;
- } /* end of j */
- for(i = 1; i <= niym1; i++)
- {
- ij = (nixm1) + ((i-1) * lca);
- if (y[k] < testy) goto fij;
- testy = testy + sinty;
- }
- ij = (niym1) * lca + nixm1;
- fij: freq[ij] = freq[ij] + 1.;
- } /* end of k (outer) */
- if (iop != 2) return;
-
- tno = no;
- tno = 1. / tno;
-
- for(j = 0; j <= nixm1; j++)
- {
- for(i = 0; i <= niym1; i++)
- {
- ij = j + i * lca;
- if (freq[ij] != 0.)
- freq[ij] = 100. * freq[ij] * tno;
- }
- }
- }