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