答案 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 Luengo和Dev-iL在评论中所指出的那样,这些数字被标记了,因此可以使用findobj
找到:
h1 = findobj(0,'tag','bayesopt.MinObjective')