凸随机值的最小化



我有一个等距值的变量(假设values=0:1e-3:1(。我想从最接近均匀随机值(假设 x=rand values中获取值及其对应索引。

我可以做[value,vIdx]=min(abs(values-x)),这将是我能做的最简单的最小化。 不幸的是,min函数不会从数据中的一个属性中利用,即凸。我不需要搜索所有索引,因为只要找到一个不比前一个少的索引,我就会找到全局最小值。话虽如此,我不想用 matlab min 函数代替一个循环,该循环会更慢,具体取决于它与我将开始的值的距离。有许多方法可以使用,作为黄金部分,但我不确定使用 matlab fmincon 是否比min方法更快。

有没有人有任何提示/想法,如何比使用所描述的min方法更快地获得所需的值?当我有时间时,我会检查时间表现,但如果有人先验地知道一个好的答案,请告诉我。

可能的应用:捕捉到最近的图形数据

由于您的点是等距的,因此您可以使用值x来查找索引:

vIdx = 1+round(x*(numel(values)-1));

这个想法是,您将间隔[0, 1]划分为numel(values)-1大小相等的间隔。现在,通过将x乘以该数字,您可以将间隔映射到点映射到整数值[0, numel(values)-1]。现在使用 round 您可以获得最接近的索引,通过添加 1,您可以获得 MATLAB 所需的基于一的索引。

最新更新