在matlab中查找(本地)自定义函数的最大值

时间:2016-07-13 05:01:36

标签: matlab

我有以下功能:

function res = score(probability)

其中probability = [.7 .4 .8 .1]res = 0.8512例如/

我的目标是找到最大化score的概率向量(以0.01跳)? 这有matlab的方法吗?或者我应该循环x次junping每次0.01以上的每个概率?

2 个答案:

答案 0 :(得分:0)

这取决于内部算法“得分”功能。

但是,如果你想使用简单的线性搜索类算法,你可以使用种子数组输入,然后在种子上进行矢量化以获得最大值。

例如,
seed_ips = [0.1:0.01:0.14;
0.2:0.01:0.24];
results = array_fun(@(x)score(seed_ips(x)),1:size(seed_ips,1));
现在最大值位置将是“查找(结果==最大(结果))”。
产生最大值的概率为 seed_ips(结果== max(结果),:)

答案 1 :(得分:0)

我假设你想找到一个最大分辨率的概率向量,精度为0.01?

this是要走的路。 在你的案例中我的migth看起来像这样:

score1   = @(prob) -score(prob)   % score here is your scorefunction
start    = [.7 .4 .8 .1]; % your start point 
opts     = optimset('TolX',0.01); % optim options
prob_vec = fminbnd(@score1,start,opts)

希望这有帮助, 玩得开心