home *** CD-ROM | disk | FTP | other *** search
- FUNCTION SMOOTH9(VAR INPUT_VECTOR,
- SMOOTHED : REAL_ARRAY;
- N : INTEGER) : BOOLEAN;
-
- { COMMENT : PERFORMS A NINE-POINT DIGITAL SMOOTHING ON THE DATA IN
- THE INPUT ARRAY CORRESPONDING TO "INPUT_VECTOR".
- THE SMOOTHED DATA ARE RETURNED IN THE ARRAY CORRESPONDING
- TO "SMOOTHED" . IT IS POSSIBLE , WHEN USING THIS PROCEDURE , TO HAVE THE
- SMOOTHED DATA RETURNED IN THE SAME ARRAY THEY WERE TRANSMITTED IN . THIS
- WOULD SAVE MEMORY SPACE :- A GOOD IDEA ...IF THE RAW DATA ARE EXPENDABLE.
- IF THE FUNCTION IS CALLED WITH N < 10 IT RETURNS FALSE.
- THE BOOLEAN VARIABLE OR CONSTANT "SUCCESSFUL" IS ASSUMED TO
- BE DECLARED AT A MORE GLOBAL LEVEL AND EQUATED TO TRUE. }
-
- { WRITTEN BY G.M.ACLAND : UNIVERSITY OF PENNSYLVANIA.
- (BASED ON A SPARSE 9X9 MATRIX POINTED OUT TO ME BY MARTIN PRING.) }
-
- VAR
- INDEX#,OFFSET : INTEGER;
- SUM1,SUM2,TEMP : REAL;
-
- BEGIN
- IF N<10 THEN SMOOTH9 := NOT SUCCESSFUL ELSE BEGIN
- SMOOTH9 := SUCCESSFUL;
- FOR INDEX# := 5 TO (N-4) DO BEGIN
- SUM1 := 0;
- SUM2 := 0;
- FOR OFFSET := -4 T0 4 DO BEGIN
- TEMP := INPUT_VECTOR[INDEX# + OFFSET];
- SUM1 := SUM1 + TEMP;
- SUM2 := SUM2 + TEMP * SQR(OFFSET);
- END; { OF : FOR OFFSET ... }
- SMOOTHED[INDEX#] := ((11.8 * SUM1) - SUM2 )/46.2;
- END; { OF : FOR INDEX# ... }
- FOR OFFSET := 1 TO 4 DO BEGIN
- SMOOTHED[OFFSET] := INPUT_VECTOR[OFFSET];
- SMOOTHED[(N - OFFSET + 1)] := INPUT_VECTOR[(N - OFFSET +1)];
- END; { OF : FOR OFFSET ... }
- END; { OF : IF N..THEN..ELSE..}
- END; { OF : FUNCTION SMOOTH9 }
-