Используя min
для абсолютной разницы, вы получите индекс наименьшей разности в качестве второго выходного аргумента. Затем вы можете использовать этот индекс для поиска ближайшего значения.
Вы вызываете функцию как closestValue = closest_to(values,target)
function closest = closest_to(vals,x)
%#CLOSEST_TO returns the value in vals closest to X
delta = abs(vals-x);
[~,minIdx] = min(delta);
closest = vals(minIdx);
Если вы хотите сохранить строку кода, вы можете заменить две последние строки на
closest = vals(delta == min(delta));
, где логическое сравнение создает логический вектор с 1, где дельта принимает наименьшее значение. Обратите внимание, что обе версии кода будут возвращать массив значений для closest
, если есть связь для ближайшего значения в vals
.