1

実行に時間がかかるスクリプトがあります。Matlab エンジンを使用して、C++ 関数で起動します。スクリプトの実行を監視するために、いくつか追加したいと思いdisp('still alive')ました。ただし、機能しません。engOpen によって開かれた matlab コマンド ウィンドウには何も表示されません (実行終了時に出力ファイルを取得するため、スクリプトが実行されていることは確かです)。

どうすればそれを機能させることができるでしょうか?

さらに、スクリプトの実行時にそのようなハートビートを取得し、 engOutputBuffer を使用して Windows コマンドに入れることは可能ですか?

ありがとう !

4

1 に答える 1

0

engOutputBufferengEvalStringおよびを使用して、printf出力をコンソール (MATLAB コマンド ウィンドウではなく、Windows コマンド ウィンドウ) に取得します。

スクリプトの進行状況を監視したい場合は、C コードで m-script ファイルを開き、engEvalString. コマンドを実行するたびに、printf内容をコンソール ウィンドウにバッファリングします。このアプローチの主な問題は、開いた m-script ファイル内のコマンドを分離 (解析) する方法ですが、特定の種類のスクリプトが予想される場合は、これを実行できます。

メッセージの監視を実現するもう 1 つの方法は、スレッドを開いengOutputBufferてバッファの内容をチェックprintfし、メイン スレッドで開始された m-script の実行と並行して実行することです。

MATLAB メッセージをコンソール (Windows コマンド) に出力する方法については、mathworks (ページの下部近く) の例を確認してください。

于 2013-10-11T13:41:05.260 に答える