可能的窍门是不使用图形语句,而是直接更改当前图形。 这将更改活动图而不更改焦点。 通常,我会执行以下操作:
function change_current_figure(h)
set(0,'CurrentFigure',h)
然后,需要将所有Figure(h)语句更改为change_curent_figure(h)。
注意,这包含在matlab文档中。
应该注意的是,这仅在已经创建图形的情况下有效。 如果要定期创建新图形,则可以将图形创建为代码的前几行,保存句柄,进行处理,然后绘制到图形上。 这个例子会起作用。 请注意,drawow命令将刷新事件缓冲区,确保已绘制所有图形。
我看过2007年至2010年的这项工作,虽然我没有理由怀疑它们不支持最新版本或更早的版本,但我不确定。
fig1=figure;
fig2=figure;
drawnow;
[a b]=do_complex_processing;
change_current_figure(fig1)
plot(a);
change_current_figure(fig2)
plot(b);