help mata mm_locate()
-------------------------------------------------------------------------------

Title

mm_locate() -- Search an ordered vector

Syntax

void mm_locate(y, x, j)

void mm_hunt(y, x, j)

where

y: numeric vector containing data; y must be ordered, either ascending or descending

x: numeric scalar containing value to be located in y

j: real scalar containing initial guess for mm_hunt(); will be replaced by a real scalar such that x lies between y[j] and y[j+1]

Description

Given an ordered data vector y and some value x, mm_locate(), replaces j such that x lies between y[j] and y[j+1]. j==0 or j==length(y) is returned, if x is out of range. mm_locate() applies the bisection method to locate x in y.

mm_hunt() also locates x in y. However, mm_hunt() uses the input value of j as the starting point for the search process and applies a modified algorithm. mm_hunt() is useful if consecutive searches be performed for similar values.

mm_locate() is a translation of the locate algorithm in Press et al. (1992:117). mm_hunt() is a translation of the hunt algorithm in Press et al. (1992:118-119).

Remarks

None.

Conformability

mm_locate(y, x, j), mm_hunt(y, x, j): input: y: n x 1 or 1 x n x: 1 x 1 j: 1 x 1 output: j: 1 x 1

Diagnostics

None.

Source code

mm_locate.mata

References

Press, William H., Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery (1992). Numerical Recipes in C. The Art of Scientific Computing. Second Edition. Cambridge University Press. http://www.numerical-recipes.com/

Author

Ben Jann, ETH Zurich, jann@soz.gess.ethz.ch

Also see