我有一個等距值的變量(假設爲values=0:1e-3:1
)。我想從values
中得到最接近均勻隨機值的值(其爲x=rand
)。最小化凸隨機值
我可以做[value,vIdx]=min(abs(values-x))
,這將是我可以做到的最簡單的最小化。 不幸的是,min
函數不會利用數據中的一個屬性,即凸出的。我不需要搜索所有索引,因爲只要找到一個不比以前更少的索引,我就已經找到了全局最小值。說,我不想用matlab min函數替換一個循環,這個循環會比較慢,這取決於它離開我將要開始的值的距離。有許多方法可以用作黃金分割,但我不確定使用matlab fmincon會比方法min
更快。
有沒有人有任何提示/想法如何獲得所需的值比使用描述的min
方法更快?我有時間檢查時間表現,但如果有人知道先驗的好答案,請告訴我。
可能的應用:捕捉到最近的圖形數據
你可以更新你的公式到一個更通用的情況,如果值的邊界不是'[0,1]':'vIdx = 1 + round((x-values(1))*(numel(values )-1)/(值(結束) - 值(1)))'。並感謝你的答案,我想我習慣了迭代方法x( – Werner