home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol131 / smooth9.pas < prev    next >
Pascal/Delphi Source File  |  1984-04-29  |  2KB  |  41 lines

  1. FUNCTION SMOOTH9(VAR INPUT_VECTOR,
  2.             SMOOTHED    : REAL_ARRAY;
  3.             N        : INTEGER)    : BOOLEAN;
  4.  
  5. { COMMENT :    PERFORMS A NINE-POINT DIGITAL SMOOTHING ON THE DATA IN
  6.   THE INPUT ARRAY CORRESPONDING TO "INPUT_VECTOR".
  7.         THE SMOOTHED DATA ARE RETURNED IN THE ARRAY CORRESPONDING 
  8.   TO "SMOOTHED" . IT IS POSSIBLE , WHEN USING THIS PROCEDURE , TO HAVE THE 
  9.   SMOOTHED DATA RETURNED IN THE SAME ARRAY THEY WERE TRANSMITTED IN . THIS
  10.   WOULD SAVE MEMORY SPACE :- A GOOD IDEA ...IF THE RAW DATA ARE EXPENDABLE.
  11.         IF THE FUNCTION IS CALLED WITH N < 10 IT RETURNS FALSE.
  12.         THE BOOLEAN VARIABLE OR CONSTANT "SUCCESSFUL" IS ASSUMED TO 
  13.   BE DECLARED AT A MORE GLOBAL LEVEL AND EQUATED TO TRUE.                    }
  14.  
  15. { WRITTEN BY G.M.ACLAND : UNIVERSITY OF PENNSYLVANIA.
  16.   (BASED ON A SPARSE 9X9 MATRIX POINTED OUT TO ME BY MARTIN PRING.)          }
  17.  
  18. VAR
  19.     INDEX#,OFFSET    : INTEGER;
  20.     SUM1,SUM2,TEMP    : REAL;
  21.  
  22. BEGIN
  23. IF N<10 THEN SMOOTH9 := NOT SUCCESSFUL ELSE BEGIN
  24.  SMOOTH9 := SUCCESSFUL;
  25.  FOR INDEX# := 5 TO (N-4) DO BEGIN
  26.   SUM1 := 0;
  27.   SUM2 := 0;
  28.   FOR OFFSET := -4 T0 4 DO BEGIN
  29.    TEMP := INPUT_VECTOR[INDEX# + OFFSET];
  30.    SUM1 := SUM1 + TEMP;
  31.    SUM2 := SUM2 + TEMP * SQR(OFFSET);
  32.    END; { OF : FOR OFFSET ... }
  33.   SMOOTHED[INDEX#] := ((11.8 * SUM1) - SUM2 )/46.2;
  34.   END;  { OF : FOR INDEX# ... }
  35.  FOR OFFSET := 1 TO 4 DO BEGIN
  36.   SMOOTHED[OFFSET]          := INPUT_VECTOR[OFFSET];
  37.   SMOOTHED[(N - OFFSET + 1)] := INPUT_VECTOR[(N - OFFSET +1)];
  38.   END;  { OF : FOR OFFSET ... }
  39.  END;   { OF : IF N..THEN..ELSE..}
  40. END;    { OF : FUNCTION SMOOTH9  }
  41.