C*********************************************************************** C COMPUTE MEANS AND STANDARD DEVIATIONS OF THE OBSERVED DATA C C REGARDING CORMAT: THE DIAGONAL CONTAINS THE STANDARD DEVIATIONS, WHILE C OFF DIAGONAL ELEMENTS ARE THE CORRELATIONS(FOR I,J=1,...,5) C*********************************************************************** SUBROUTINE MEAN (N) INCLUDE 'PARMTR.INC' REAL DATA(MAXOBJ,5) C*********************************************************************** C COMMON STATEMENTS C*********************************************************************** COMMON /MEASUR/ PD(MAXOBJ), SD(MAXOBJ), MESANG(MAXOBJ), 1 COMANG(MAXOBJ), SINA(MAXOBJ) COMMON /STATS/ SM(10), CORMAT(5,5) C*********************************************************************** C EQUIVALENCE STATEMENTS C*********************************************************************** EQUIVALENCE (DATA(1,1),PD(1)) C*********************************************************************** C DECLARATIONS C*********************************************************************** DOUBLE PRECISION Q C*********************************************************************** C CALCULATE THE MEANS C*********************************************************************** DO 20 I=1,5 Q=0. DO 10 M=1,N 10 Q=Q+DBLE(DATA(M,I))/DBLE(N) 20 SM(I)=Q C*********************************************************************** C CALCULATE THE VARIANCE-COVARIANCE MATRIX EXCEPT THE STANDARD C DEVIATIONS ARE ON THE DIAGONAL RATHER THAN THE VARIANCES C*********************************************************************** DO 30 I=1,5 DO 30 J=1,5 30 CORMAT(I,J)=0.0 IF (N.EQ.1) RETURN DO 50 I=1,5 DO 50 J=I,5 Q=0. DO 40 M=1,N 40 Q=Q+ 1 (DBLE(DATA(M,I))-DBLE(SM(I)))*(DBLE(DATA(M,J))-DBLE(SM(J))) CORMAT(I,J)=Q/DBLE(N-1) IF (I.EQ.J) CORMAT(I,J)=SQRT(ABS(CORMAT(I,J))) 50 CONTINUE C*********************************************************************** C CALCULATE THE CORRELATION MATRIX LEAVING THE STANDARD DEVIATIONS C THE DIAGONAL. C*********************************************************************** DO 70 I=1,4 DO 70 J=I+1,5 Q=CORMAT(I,I)*CORMAT(J,J) IF (Q.NE.0.) THEN CORMAT(I,J)=CORMAT(I,J)/Q CORMAT(J,I)=CORMAT(I,J) ELSE CORMAT(I,J)=0. CORMAT(J,I)=0. ENDIF 70 CONTINUE RETURN END