有没有办法告诉Matlab不要在figure
和plot
这样的图形命令上窃取窗口焦点(从外部编辑器),比如Emacs。这将大大提高我的工作效率,因为我经常希望在数据(重新)处理期间继续代码开发。
发布于 2011-12-13 21:13:04
这是可能的,技巧是不使用figure语句,而是直接更改当前的图形。这将在不更改焦点的情况下更改活动绘图。通常我会这样做:
function change_current_figure(h)
set(0,'CurrentFigure',h)
然后,需要将所有图(H)语句更改为change_curent_figure(h)。
请注意,这包含在matlab documentation.中
应该注意的是,只有在已经创建了图形的情况下,这才有效。如果要定期创建新的图形,可以将图形创建为最开始的几行代码,保存句柄,进行处理,然后绘制到它们。这个例子是可行的。注意,drawnow命令将刷新事件缓冲区,确保绘制所有图形。
我看过2007-2010年的工作,不确定最新或更早的版本是否支持这一点,尽管我没有理由怀疑他们不支持。
fig1=figure;
fig2=figure;
drawnow;
[a b]=do_complex_processing;
change_current_figure(fig1)
plot(a);
change_current_figure(fig2)
plot(b);
https://stackoverflow.com/questions/8488758
复制相似问题