0

C++ から MATLAB 関数 (dll) を実行します。この関数はいくつかのパラメーターを取得し、多くの反復でループを実行します。C++ コードでいくつかのフラグを設定し、MATLAB 関数からの各反復でそれをチェックする方法はありますか? このフラグが C++ コードで false に設定されている場合 (たとえば、他のスレッドによって)、MATLAB 関数はループを中断し、C++ コードに戻ります。

4

1 に答える 1

0

C++ コードと MATLAB コードの両方を変更できる場合 (質問から推測できるように)、イベントのフラグとして空のファイルを使用するのが最も簡単な方法だと思います。他のスレッドがファイルを作成できる場合、たとえば「event.flag」としましょう。MATLAB 関数でその存在を簡単に確認できます。

if exist('event.flag','file')
    % do_something
end

2 番目の引数を必ず含めてくださいfile。これにより、exist の実行がはるかに高速になります。

この解決策は、グローバル変数を使用するよりもはるかに簡単でエラーが発生しないと思います。


実行時に MATLAB と他のプロセスの間でデータを交換する必要がある場合は、MEMMAPFILEオブジェクトを使用することをお勧めします。ドキュメントをチェックして、あなたのケースに適しているかどうかを確認してください。

于 2013-02-27T15:50:04.027 に答える