0

入力マットファイルを受け取り、出力ファイルを生成するmatlabスクリプトがあります。現在、このスクリプトを実行できるシェルスクリプトがあります。

ProcessBuilderクラスを使用してJavaからこのスクリプトを実行していますが、すべて正常に機能しています。
javaからmatlabスクリプトの実行を頻繁に実行する必要があり、スクリプトが実行されるたびにmcrプロセスが作成され、スクリプトが実行され、mcrが終了します。

MCRプロセスを開いて、Javaに対してmatlabセッションを開いて、同じプロセスを存続させて、同じセッションでスクリプトを複数回実行できるようにするのが好きです。

matlabcontrolがこれに適しているようです。MatlabProxyFactoryシェルスクリプトで設定しているMCRの場所とLD_LIBRARY_PATHを使用してを構成し、同じセッションでスクリプトを実行するにはどうすればよいですか?

また、MATLAB JA Builderツールに出くわしましたが、無料ではないため、現時点ではこれを使用できません。

ありがとう!

4

1 に答える 1

2

を使用している場合matlabcontrolは、シェル スクリプトは必要ないと思います。実行したい m ファイルの名前を指定してください。シェル スクリプトを と組み合わせて保持したい場合はProcessBuilder、プロセスを一度開始し、その入力ストリームへの参照を保持する必要があります。コマンドを実行したいときは、そのストリームに書き込みます。また、Matlab の出力ストリームとエラー ストリームを空にするために、スレッドを有効にしておく必要があります。そうしないと、スレッドがいっぱいになり、Matlab がハングします。これを使いたい場合は、このプロジェクトのソース (私が貢献しています) を参照することをお勧めします。興味のあるクラスは RCaller です。matlab ではなく R を呼び出すことを除いて、ほぼ同じことを行います。

于 2011-11-13T11:39:40.660 に答える