MATCH

Name

MATCH

Purpose

Routine to match values in two vectors.

Calling Sequence

match, a, b, suba, subb, [ COUNT =, /SORT, EPSILON = ]

Inputs

a,b - two vectors to match elements, numeric or string data types

Outputs

suba - subscripts of elements in vector a with a match
in vector b
subb - subscripts of the positions of the elements in
vector b with matchs in vector a.
suba and subb are ordered such that a[suba] equals b[subb]

Optional Input Keyword

/SORT - By default, MATCH uses two different algorithm: (1) the
/REVERSE_INDICES keyword to HISTOGRAM is used for integer data,
while (2) a sorting algorithm is used for non-integer data. The
histogram algorithm is usually faster, except when the input
vectors are sparse and contain very large numbers, possibly
causing memory problems. Use the /SORT keyword to always use
the sort algorithm.
epsilon - if values are within epsilon, they are considered equal. Used only
only for non-integer matching. Note that input vectors should
be unique to within epsilon to provide one-to-one mapping..
Default=0.

Optional Keyword Output

COUNT - set to the number of matches, integer scalar

Side Effects

The obsolete system variable !ERR is set to the number of matches;
however, the use !ERR is deprecated in favor of the COUNT keyword

Restrictions

The vectors a and b should not have duplicate values within them.
You can use rem_dup function to remove duplicate values
in a vector

Example

Method

For non-integer data types, the two input vectors are combined and
sorted and the consecutive equal elements are identified. For integer
data types, the /REVERSE_INDICES keyword to HISTOGRAM of each array
is used to identify where the two arrays have elements in common.