将python代码转换为matlab。任何人都可以帮助将附加的代码转换为matlab

时间:2011-01-24 14:52:04

标签: python matlab

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 个答案:

答案 0 :(得分:6)

对绝对差值使用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));

其中逻辑比较创建一个逻辑向量,其中delta取其最小值。请注意,如果closest中的最接近值存在平局,则代码的两个版本都将返回vals的值数组。