凸随机值的最小化

时间:2013-08-21 04:50:54

标签: matlab minimize

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

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

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

可能的应用程序:对齐最近的图形数据

1 个答案:

答案 0 :(得分:3)

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

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

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