Matlab 凸随机值的极小化
我有一个等距值变量(假设Matlab 凸随机值的极小化,matlab,minimize,Matlab,Minimize,我有一个等距值变量(假设值=0:1e-3:1)。我想从values中获取最接近均匀随机值的值及其对应索引(假设x=rand) 我可以做[value,vIdx]=min(abs(values-x)),这是我能做的最简单的最小化不幸的是,min函数不会利用数据中的一个属性,即凸属性。我不需要搜索所有索引,因为只要找到一个不小于上一个索引的索引,我就找到了全局最小值。尽管如此,我不想用matlab min函数代替一个循环,这个循环的速度会慢一些,这取决于它与我将要开始的值之间的距离。有许多方法可以使用
值=0:1e-3:1
)。我想从values
中获取最接近均匀随机值的值及其对应索引(假设x=rand
)
我可以做[value,vIdx]=min(abs(values-x))
,这是我能做的最简单的最小化不幸的是,min
函数不会利用数据中的一个属性,即凸属性。我不需要搜索所有索引,因为只要找到一个不小于上一个索引的索引,我就找到了全局最小值。尽管如此,我不想用matlab min函数代替一个循环,这个循环的速度会慢一些,这取决于它与我将要开始的值之间的距离。有许多方法可以使用,如黄金分割法,但我不确定使用matlab fmincon是否比min
方法更快
是否有人对如何比使用所述的min
方法更快地获得所需值有任何提示/想法?当我有时间时,我会检查时间性能,但是如果有人事先知道一个好的答案,请让我知道
可能的应用程序:捕捉到最近的图形数据由于点的距离相等,因此可以使用值
x
查找索引:
vIdx = 1+round(x*(numel(values)-1));
其思想是将间隔
[0,1]
划分为numel(值)-1
大小相等的间隔。现在,通过将x
乘以该数字,可以将间隔映射到[0,numel(值)-1]
,其中点映射到整数值。现在使用round
可以得到最接近的一个,通过添加1可以得到MATLAB所需的基于一的索引。如果值边界不是[0,1]
:vIdx=1+round((x-values(1))*(numel(values)-1/(values(end)-values(1))
。谢谢你的回答,我想我已经习惯了迭代方法(