如何为给定的目标值搜索和查找数组中最接近的值? 例如,这是我的数组:
0、54、10、11、152、7
例如,当我搜索目标值6时,代码应返回7
答案 0 :(得分:3)
% Array to search in, modified to have more than one closest value.
x = [0, 5, 10, 11, 152, 7];
% Target value.
target = 6;
计算每个数组元素与目标值之间的绝对“距离”。
% Temporary "distances" array.
temp = abs(target - x);
通过min
查找最小“距离”值。将临时的“距离”数组与该最小值进行比较(导致某个二进制数组),然后使用find
获得相应的索引,该索引最终可用于从原始输入数组{{1 }}。
x
输出看起来像这样:
% Find "closest" values array wrt. target value.
closest = x(find(temp == min(abs(target - x))))
答案 1 :(得分:1)
您可以将interp1
与'nearest'
选项一起使用:
V = [0, 54, 10, 11, 152, 7];
x = 6;
result = interp1(V,V,x,'nearest');