Matlabスクリプトはすべて独立して実行できるいくつかのセルから構成されています(別のマクロを実行するには1つのセルを実行する必要がありますが、作業領域をクリアしてください。最初のセルを実行せずに2番目のセルを再実行する必要があります)。これらのセルのコードは(もちろん)失敗することがあります。その場合は、特定のコマンドを実行したいと思います。Matlabでtry/catchなしでエラーが発生した場合に指定されたコマンドを実行
コードは複数の独立したセルにまたがっているので、try/catchブロックを使用してこれを実行することはできません。各セルはかなり短く(関数呼び出しを含む数行)、すべてのセルにtry/catchブロックを導入すると、おそらくスクリプトの長さが2倍になります。
具体的には、最初のセルにログファイル(diary filename.log
)を開きます。このファイルは、任意のセルからエラーが発生した(およびログに記録された)後に自動的に閉じます(およびdiary off
)。この設定は、少なくともログファイルが再び閉じるまで有効にする必要があり、プログラムで設定する必要があります(ログファイルを開く同じセルに設定したい)。
どうすればよいですか?
コードが失敗するのはなぜですか?これらの境界を設定できると仮定して、あなたのコードをサポートするif文を置き換えることはできますか? –
このセルラアーキテクチャをコードに使用する理由はありますか?おそらく、私がセル・モードについて理解していないものがあるかもしれませんが、私はいつもプロトタイプ・コマンドを手助けするためのツールと見ていました。好きなものがあれば、それを関数にカプセル化する必要があります。 – Miebster
私はセル構造を使用してコードの一部を何度も繰り返し、他の(遅い)タスクを一度実行するだけで済むようにします。この具体的なケースでは、私は最初に3Dジオメトリを構築し(遅い)、いくつかのパラメータを変更しながらCTスキャンを(より速く)シミュレートします。コードの完成度にかかわらず、それぞれの実行をログに記録したいと思いますが、それぞれが別のログファイルになるようにしたいと思います。タイムスタンプの後に名前が付けられたシミュレーションの開始時にログを開きますが、コードが失敗した場合は、問題を修正するために日記を閉じたいと思います。 –