2016-07-06 10 views
0

場合によっては、Matlabコードが長時間実行されることがあります。 私はそれを停止したい - Ctrl + Cを入力しますが、その後もいくつかのコードを実行したいと思います。例: Ctrl + cを入力した後のMatlabでは、コードを実行したり関数を呼び出すことはできますか?

for i = 1:100000, 
    M(i) = function(i,values); 
end 

このforループが終わっていない場合でも、私も他のプロセスを実行するために別の関数を呼び出したいセンター+ Cまたは異常な状況などで停止します。

N = new_func(M) 
save(N) 
+2

私はあなたの質問を理解できません。あなたはCtrl + Cを押して実行プログラムを中断してから関数を実行するか、実行プログラムを一時停止してから関数を実行することができます。 – GameOfThrows

+0

「異常な状況」が発生するたびに、またはユーザーがctrl + cを押すたびに自動的に実行されるコールバックのようなものを追加したいですか? – Matt

+0

@Matt、はい、私は "異常な状況"のためのコールバックが欲しいです。 –

答えて

2

onCleanupオブジェクトを参照してください。 onCleanupオブジェクトを作成するには、コードの終了時に実行したいコードを与えます。コードが自然に終了した場合でも、エラーが発生した場合でも、Ctrl-Cを使っても終了します。

スクリプトではなく関数内で使用する必要があります(onCleanupオブジェクトがスコープから外れて削除されたときに実際にコードを実行するため、 )。しかし、通常はそれほど制限はありません。

+0

私はこのような関数を実行します '' ' function [] = action() sum = 0; i = 1:10000の場合、 sum = sum + i; end エラー( 'エラーを表示') disp(sum) finishup = onCleanup(@()myCleanupFun()); は終わり '' ' 私のクリーンアップ機能 ' '' 関数myCleanupFun() DISP( 'myCleanupFun') 終了 '' ' ' '' DISP( 'myCleanupFunは') '' 'を実行する必要がありますか。しかし、私のコードは ''エラー( 'エラーを引き起こす ')' ''の後で停止します。どうも。 –