1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# IC_REJECT -- Reject points with large residuals from the fit.
#
# The sigma of the fit residuals is calculated. The rejection thresholds
# are set at low_reject*sigma and high_reject*sigma. Points outside the
# rejection threshold are rejected from the fit and flagged in the rejpts
# array. Finally, the remaining points are refit.
procedure ic_rejectd (cv, x, y, w, rejpts, npts, low_reject, high_reject,
niterate, grow, nreject)
pointer cv # Curve descriptor
double x[npts] # Input ordinates
double y[npts] # Input data values
double w[npts] # Weights
int rejpts[npts] # Points rejected
int npts # Number of input points
real low_reject, high_reject # Rejection threshold
int niterate # Number of rejection iterations
real grow # Rejection radius
int nreject # Number of points rejected
int i, newreject
begin
# Initialize rejection.
nreject = 0
call amovki (NO, rejpts, npts)
if (niterate <= 0)
return
# Find deviant points.
do i = 1, niterate {
call ic_deviantd (cv, x, y, w, rejpts, npts, low_reject,
high_reject, grow, YES, nreject, newreject)
if (newreject == 0)
break
}
end
|