如何控制Bayesopt功能中出现的数字?

时间:2018-09-19 11:00:48

标签: matlab plot matlab-figure bayesian

bayesopt绘制这样的图形:

enter image description here

如何访问此类数字以修改标题或其他内容?如果我使用gcf,则不能保证我得到正确的图形,因为我可以在执行过程中将焦点转移到另一个图形窗口。

1 个答案:

答案 0 :(得分:1)

显然,bayesopt不允许您返回图形手柄。因此,我建议在调用bayesopt之后立即在行上调用h=gcf;,从而迫使程序将图形句柄返回到h,然后可以在任何需要的时间对其进行修改,即使移至其他数字。

results = bayesopt(fun,vars,Name,Value); % execute bayesian optimisation
h = gcf; % directly after optimisation grab a figure handle

现在,您可以在h中修改属性,例如只需输入标题即可

h.CurrentAxes.Title.String = 'Your plot title'

之所以可行,是因为在完整的代码运行完毕之前,MATLAB不会显示数字。至少对于我的脚本来说就是这种情况,我生成一个图形,进行几分钟的优化,然后生成另一个图形。这两个图是同时显示的,即当MATLAB完成完整程序的运行时。因此,在代码运行时,您无法单击其他图形,因为它们根本不存在。如果您碰巧打开了较旧的图形(从其他脚本中打开),则无论如何,焦点都会转移到最新创建的图形上,即在代码中创建图形的那一刻(因此不在显示时),因此您需要在在bayesopt调用结束与gcf调用之间需要几毫秒的时间,我想这太不可能了,因此不值得考虑,尤其是因为它需要手动干预。

正如Cris LuengoDev-iL在评论中所指出的那样,这些数字被标记了,因此可以使用findobj找到:

h1 = findobj(0,'tag','bayesopt.MinObjective')