Binary search for closest value in an array

版本 1.0.0.0 (1.4 KB) 作者: Benjamin Bernard
Returns closest value and corresponding index in an increasingly ordered array.
374.0 次下载
更新时间 2012/8/27

查看许可证

Input values
============
arr : increasingly ordered array of values in R
val : scalar in R

Description
===========
Returns the value and index of 'arr' that is closest to 'val'. If several entries are equally close, the first one is returned.

Limitations
===========
Works fine up to machine error, e.g. [v, i] = closest_value([4.8, 5], 4.9) will return [5, 2], since in float representation 4.9 is strictly closer to 5 than to 4.8. See also http://en.wikipedia.org/wiki/Floating_point

Purpose
=======
Why upload another binary search? I found that many uploaded files are unnecessarily complicated and either don’t have a predetermined outcome (f.ex. the first one) if there are several choices or crash if the value to be searched for lies outside the boundaries of the array. Also, this code is thought to be instructional for people new to Matlab to build their own binary searches on. That’s why I kept it to the simplest case where the array needs to be increasingly ordered and the first of several values is returned. The code could be easily adapted for returning the last index instead, to allow for decreasingly ordered arrays, for fractional indices or for other well-ordered spaces. If you are looking for an implementation in C that allows for all these behaviour modifications, here is a very nice one: http://www.mathworks.com/matlabcentral/fileexchange/30484-fast-binary-search

引用格式

Benjamin Bernard (2024). Binary search for closest value in an array (https://www.mathworks.com/matlabcentral/fileexchange/37915-binary-search-for-closest-value-in-an-array), MATLAB Central File Exchange. 检索来源 .

MATLAB 版本兼容性
创建方式 R2011b
兼容任何版本
平台兼容性
Windows macOS Linux
类别
Help CenterMATLAB Answers 中查找有关 Matrices and Arrays 的更多信息
致谢

启发作品: fast_sorted_mask, fast_search_histogram

Community Treasure Hunt

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

Start Hunting!
版本 已发布 发行说明
1.0.0.0