从给定值中查找数组中匹配或最接近的值

时间:2019-04-30 08:18:56

标签: matlab

如何为给定的目标值搜索和查找数组中最接近的值? 例如,这是我的数组:

0、54、10、11、152、7

例如,当我搜索目标值6时,代码应返回7

2 个答案:

答案 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');