File Exchange

image thumbnail

Find the id of the closest value in an array to a given value

version 1.0.0.0 (2.75 KB) by David J. Mack
Returns the index of the closest value in an array X to given values Y

1 Download

Updated 14 Sep 2016

View License

For given column vector X and some values Y, FINDCLOSESTID2VAL returns the indices in X which are closest to Y, e.g.: FINDCLOSESTID2VAL([0.1 -1 -0.05 10],0) will return 3, since -0.05 is the closest value to 0.
This function is very handy for time series, where you want to get the id of a time point which might not be exactly matched.
This function is very fast for small to moderate sized 'X' and small 'Vals'. For a function doing the same work quickly on two very large arrays and with some additional features see NEARESTPOINT by Jos:
www.mathworks.com/matlabcentral/fileexchange/8939
The figure on the upper left shows the max. length of 'Vals' versus the length of 'X' for which FINDCLOSESTID2VAL (f1) will be faster than NEARESTPOINT (f2) including the equation to compute the critical value for arbitrary lengths of 'X'.

Cite As

David J. Mack (2021). Find the id of the closest value in an array to a given value (https://www.mathworks.com/matlabcentral/fileexchange/59043-find-the-id-of-the-closest-value-in-an-array-to-a-given-value), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (3)

David J. Mack

...but not completely: See speed comparison.

David J. Mack

I accept the defeat ;-)

Jos (10584)

Nice wrapper around bsxfun. However, this makes it very slow for larger arrays, and increasingly so.
Alternatives, like my own function nearestpoint do the same job but much faster.

http://uk.mathworks.com/matlabcentral/fileexchange/8939-nearestpoint-x-y-m-

MATLAB Release Compatibility
Created with R2009a
Compatible with any release
Platform Compatibility
Windows macOS Linux
Acknowledgements

Inspired by: nearestpoint(x, y, m)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!