Возможно, уловка состоит не в том, чтобы использовать оператор рисунка, а в том, чтобы напрямую изменить текущий рисунок. Это изменит активный сюжет без изменения фокуса. Обычно я делаю что-то вроде этого:
function change_current_figure(h)
set(0,'CurrentFigure',h)
Затем все операторы figure (h) необходимо изменить на change_curent_figure (h).
Обратите внимание, это включено в документацию matlab.
Следует отметить, что это работает, только если фигура уже создана. Если будут периодически создаваться новые фигуры, можно создать фигуры в виде первых нескольких строк кода, сохранить маркеры, выполнить обработку и затем отобразить их. Этот пример будет работать. Обратите внимание, что команда 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);