C C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CTITLESAWMEAN -- DETERMINE THE WEIGHTED MEAN WITHIN A BAND 00010001 CA AUTHOR B. S. BOK 00030001 CA DESIGNER B. S. BOK 00040001 CA LANGUAGE FORTRAN 00050001 CA SYSTEM IBM 00060004 CA WRITTEN AUGUST, 1990 00070001 C REVISED 12-21-91 JJC - MODIFIED TO MEET EDP STANDARDS. C CA 00150001 CA WMEAN = SAWMEAN (AMP, PHZ, NYQ, CUT, ICODE) 00160004 CA 00180000 CA INPUT AMP = AMPLITUDE SPECTRUM R4 00190003 CA INPUT PHZ = PHASE UNWRAPPED SPECTRUM R4 00200003 CA INPUT NYQ = NYQUIST NO. OF SAMPLES I4 00210003 CA INPUT CUT = CUT LEVEL OF AMPLITUDE TO BE USED R4 00200003 CA INPUT ICODE = 0 => AMPLITUDE WEIGHTING I4 00210003 CA .NE. 0 => POWER WEIGHTING CA OUTPUT WMEAN = WEIGHTED MEAN R4 00260007 CA 00350000 CA THIS ROUTINE DETERMINE THE WEIGHTED MEAN WITHIN A BAND ABOVE A 00360001 CA THRESHOLD 00370001 CA 00510000 C C************************************************************** C * C SUBROUTINES AND FUNCTIONS CALLED FROM THIS ROUTINE * C * C NO SUBROUTINES OR FUNCTIONS CALLED FROM THIS PROGRAM UNIT * C * C************************************************************** C FUNCTION SAWMEAN (AMP, PHZ, NYQ, CUT, ICODE) C IMPLICIT INTEGER (A-Z) C DIMENSION AMP(1), PHZ(1) C REAL AMP REAL CUT REAL FACT REAL HOLD REAL PHZ REAL TEMP REAL SAWMEAN C C RANGE OF FREQUENCY TO BE USED C MIN = 1 MAX = NYQ IF (CUT .GT. 0.) THEN HOLD = 0. DO 100 N = 1, NYQ IF (HOLD .LT. AMP(N)) THEN HOLD = AMP(N) MAX = N ENDIF 100 CONTINUE HOLD = HOLD * CUT DO 120 N = 1, MAX IF (AMP(MAX - N + 1) .LE. HOLD) GO TO 140 120 CONTINUE N = MAX 140 CONTINUE MIN = MAX - N + 1 DO 160 N = MAX, NYQ IF (AMP(N) .LE. HOLD) GO TO 180 160 CONTINUE N = NYQ 180 CONTINUE MAX = N ENDIF C C WEIGHTED MEAN BETWEEN SAMPLES MIN, MAX C SAWMEAN = 0. FACT = 1.E-30 DO 200 N = MIN, MAX IF (ICODE .EQ. 0) THEN TEMP = AMP(N) ELSE TEMP = AMP(N) * AMP(N) ENDIF FACT = FACT + TEMP SAWMEAN = SAWMEAN + TEMP * PHZ(N) 200 CONTINUE SAWMEAN = SAWMEAN / FACT C RETURN END