4

MyMatlabScript別のプログラム (Erlang で作成) からmatlab スクリプトを繰り返し呼び出しています。以下を含むバッチファイルを使用してこれを行っています。

matlab -nodesktop -nosplash -wait -r "addpath('C:/...'); MyMatlabScript; %quit;"

これは、バッチ ファイル スクリプトを実行するたびに Matlab を起動する必要があることを意味します。動作しますが、遅いです*。

パフォーマンスを向上させるために、Matlab を一度起動してから、Erlang またはバッチ スクリプトを使用して、Matlab のその 1 つのインスタンスを使用して Matlab スクリプトを繰り返し開始できるようにしたいと考えています。

これはできますか?

Windows7でMatlab 7.8.0(R2009a)を使用していることに注意してください。

*ここに記載されている問題により、さらに遅くなります。

4

3 に答える 3

6

単純ではありません。ただし、MATLAB で COM オートメーション サーバー インターフェイスを使用してみることができます。COM オートメーション サーバーとのインターフェイスには、Erlang ライブラリが必要です。このインターフェイスを使用すると、自動化サーバーを作成して、コマンドを送信し続けることができます。ドキュメントはhttp://www.mathworks.com/help/matlab/call-matlab-com-automation-server.htmlで入手できます。ドキュメントには、Visual Basic コードを使用する例があります。

于 2013-01-11T17:52:16.663 に答える
2

メッセージを Matlab に渡すことが実行可能なオプションであるかどうかはわかりませんが、別の方法を提案したいと思います。Matlab には、コールバック関数を指定できる「タイマー」オブジェクトがあります。定期的に、Matlab コールバック関数は、Erlang プログラムによって変更されたファイルをチェックできます。変更されたファイルは、目的の Matlab ルーチンをトリガーします。まあ、それはプログラミング スタイルの点で「高級料理」ではありませんが、仕事をする必要があります。

于 2013-01-13T17:43:23.883 に答える
1

私はこれだけの経験があります。主なオプションは次の 3 つです。

  1. os:cmd() を使用した Matlab への Erlang コマンド ライン呼び出し

  2. 2 つのアプリケーションを分離し、tcpip 経由で通信する必要があるプロトコルを作成します。利点は、Erlang がサーバーになっていること、またはその逆であることです。どのようにコーディングしてもかまいません。Challenge は Matlab のプロトコル コードであり、Erlang はそのために特別に構築されています。

  3. システムパイプを作ります。Windows (NamedSystemPipe) に固執している場合は、その方法に関するドキュメントを見つけるのに問題はないはずです。

ローカルのみの通信には方法 3 を、ネットワーク ベースの通信には方法 2 を好みます。1 を使用すると、絶対に最小限の柔軟性が得られます。他にもありますが、あなたが尋ねているので、これが私が推奨するものです。

そして何よりも、1 を使用しないことで「遅い」問題が解消されることです。

于 2013-01-20T02:37:35.873 に答える