Конвертировать код Python в Matlab.Любой, помогите преобразовать прикрепленный код в Matlab - PullRequest
0 голосов
/ 24 января 2011
def _closest_to(self, vals, x):
    ''' returns the value in vals closest to x '''
    closest = vals[0]
    closest_dist = abs(x-closest)
    for val in vals[1:]:
        cur_dist = abs(x-closest)
        if cur_dist < closest_dist:
            closest = x
            closest_dist = cur_dist
    return closest

1 Ответ

6 голосов
/ 24 января 2011

Используя 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...