【发布时间】:2019-03-08 10:11:32
【问题描述】:
我正在寻找一个函数来计算与国际象棋游戏相关的真实 Elo 表现等级。
它会接受:
game_results 向量,例如[1 0 0.5] 表示玩家赢了第一局,输掉了第二局,平了第三局。由此我们将得到另一个变量 score,这里是 1.5,另一个变量 num_games,这里是 3。
一个对手评分的向量,例如[1200 1400 1350] 表示第一个对手的评分为 1200,第二个为 1400,第三个为 1350。
我知道在以下等式中真正的绩效评级是 x:
for i = 1:num_games
score = score + (1/(1+10^((opp_ratings(i)-x)/400)));
end
需要找到x的正确值,使这里的分数加起来为实际分数1.5。
在这里我碰巧知道x=1317.55 会产生大约正确的答案。
在我看来,我需要将包含上述代码的匿名函数传递给其他优化函数。然而:
我从this answer 了解到,匿名函数不能包含循环。
我不确定哪种优化功能合适。 MATLAB 似乎没有任何原生二分函数。
【问题讨论】:
-
你不需要使用匿名函数。您需要将句柄传递给函数。您可以将您的函数写入一个名为
myfun.m的文件中,然后使用@myfun获取句柄。匿名函数只是函数句柄的一个特例。
标签: matlab