figure
やplot
などのグラフィカルコマンドでMatlab notにウィンドウフォーカスを(Emacsなどの外部エディターから)盗むように指示する方法はありますか。データ(再)処理中にコード開発を継続したい場合が多いため、これにより私の生産性が大幅に向上します。
可能性があります。トリックは、figureステートメントを使用せずに、現在のFigureを直接変更することです。これにより、フォーカスを変更せずにアクティブなプロットが変更されます。通常、私はこのようなことをします:
function change_current_figure(h)
set(0,'CurrentFigure',h)
次に、すべてのfigure(h)ステートメントをchange_curent_figure(h)に変更する必要があります。
これは、フィギュアがすでに作成されている場合にのみ機能することに注意してください。新しいFigureが定期的に作成される場合は、最初の数行のコードとしてFigureを作成し、ハンドルを保存して、処理を行ってから、それらにプロットできます。この例はうまくいきます。 drawnowコマンドはイベントバッファーをフラッシュし、すべてのFigureが確実にプロットされることに注意してください。
私は2007年から2010年にかけてこの作品を見てきましたが、最新バージョンまたは以前のバージョンがこれをサポートしているかどうかはわかりませんが、サポートしていないと疑う理由はありません。
fig1=figure;
fig2=figure;
drawnow;
[a b]=do_complex_processing;
change_current_figure(fig1)
plot(a);
change_current_figure(fig2)
plot(b);
同じ質問がありますが、図を作成するコードが外部のサプライヤーからのものであるという複雑さがあるため、変更したくありませんでした。以下は、Matlab 2014bでテストされた2つの可能性(MathWorksサポートによって特定されたもの)です。
set(0, 'DefaultFigureVisible', 'off');
for i = 1:10
fprintf('i: %g\n', i)
figure;
pause(1);
end
set(0, 'DefaultFigureVisible', 'on');
figHandles = findall(0, 'Type', 'figure');
set(figHandles(:), 'visible', 'on')
このコードは必要なことを正確に実行しますが、追加の不便な点は、コード実行の進行状況を確認できないため、何か問題が発生した場合に長時間実行を中断できないことです。