REMOVE
Name
REMOVE
Purpose
Contract a vector or up to 25 vectors by removing specified elements
Calling Sequence
REMOVE, index, v1,[ v2, v3, v4, v5, v6, ... v25]
Inputs
INDEX - scalar or vector giving the index number of elements to
be removed from vectors. Duplicate entries in index are
ignored. An error will occur if one attempts to remove
all the elements of a vector. REMOVE will return quietly
(no error message) if index is !NULL or undefined.
Input-output
v1 - Vector or array. Elements specifed by INDEX will be
removed from v1. Upon return v1 will contain
N fewer elements, where N is the number of distinct values in
INDEX.
OPTIONAL INPUT-OUTPUTS:
v2,v3,...v25 - additional vectors containing
the same number of elements as v1. These will be
contracted in the same manner as v1.
Examples
(1) If INDEX = [2,4,6,4] and V = [1,3,4,3,2,5,7,3] then after the call
IDL> remove,index,v
V will contain the values [1,3,3,5,3]
(2) Suppose one has a wavelength vector W, and three associated flux
vectors F1, F2, and F3. Remove all points where a quality vector,
EPS is negative
IDL> bad = where( EPS LT 0, Nbad)
IDL> if Nbad GT 0 then remove, bad, w, f1, f2, f3
Method
If more than one element is to be removed, then HISTOGRAM is used
to generate a 'keep' subscripting vector. To minimize the length of
the subscripting vector, it is only computed between the minimum and
maximum values of the index. Therefore, the slowest case of REMOVE
is when both the first and last element are removed.
Revision History
Written W. Landsman ST Systems Co. April 28, 1988
Cleaned up code W. Landsman September, 1992
Major rewrite for improved speed W. Landsman April 2000
Accept up to 25 variables, use SCOPE_VARFETCH internally
W. Landsman Feb 2010
Fix occasional integer overflow problem V. Geers Feb 2011
Quietly return if index is !null or undefined W.L. Aug 2011