有没有办法告诉Matlab不要从诸如figure和plot之类的图形命令上窃取窗口焦点(从外部编辑器,例如Emacs)到我。这将大大提高我的生产率,因为我经常想在数据期间继续代码开发(重新 -)处理。
figure
plot
可能的窍门是不使用图形语句,而是直接更改当前图形。 这将更改活动图而不更改焦点。 通常,我会执行以下操作:
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);