Java から MATLAB コードを実行する際に問題に直面しています。これについて何か知っていることがあれば、私を助けてくれませんか?
5 に答える
MathWork の MATLAB Builder for Java Toolbox を購入したくない場合は、MATLAB の文書化されていない JMI (Java-MATLAB Interface) を使用できます。CSSM ニュースグループ (または Google) で、JMI または JMI に基づく JMatLink を検索してください。MATLAB コード自体には、JMI の使用例がたくさんあります。MATLAB インストール全体で、MATLAB エディターの検索ツールを使用して「jmi」を検索してください。
JMI は、MathWorks によって文書化も公式サポートもされていないことに注意してください。さらに、不適切に使用すると、アプリケーションがハングまたはクラッシュする可能性があります。ただし、ツールボックスとは異なり、無料です。
Java アプリケーションで matlab スクリプト/関数を実行するために Java Builder を使用しましたが、非常に簡単で便利なようです。
この目的のために、Java クラスとして matlab スクリプト/関数をデプロイするための Java Builder JA ツールボックスが必要です。
次に、(変換された) Java クラスを Java プロジェクト ライブラリに追加し、さらに javabuilder jar ファイルを追加する必要があります。
上記の手順を実行した後、コードでクラス名を呼び出すだけで、matlab スクリプト (現在はプロジェクト ライブラリの Java クラス) を簡単に実行できます。クラスが matlab 関数の場合、パラメーターを渡して戻り値を簡単に取得できます。
もちろん、それが唯一の方法ではありません。しかし、これは私には比較的簡単に思えます。
これがあなたの質問への答えになることを願っています。
Yair が言及した文書化されていない JMI (Java MATLAB Interface) を使用する代わりに、 JMI をラップする Java API であるmatlabcontrolを使用すると、はるかに使いやすくなります。十分に文書化されており、入門用のウォークスルーがあります。JMI を直接使用する場合とは異なり、MATLAB の外部で Java プログラムを実行するときにも使用できます。
これを行うには2つの方法があります:
- Cインターフェイスを備えたMatlabエンジンを使用します(そのための最初の回答のリンクを参照してください)。これを実行するすべてのマシンにMatlabをインストールする必要があります(詳細については、Matlabライセンスを参照してください)。
- Matlabコードをコンパイルして関数のJavaインターフェイスを直接生成するMatlabBuilderforJavaを使用します。このソリューションでは、MatlabコンパイラーとMatlab Builder for Javaを使用する必要がありますが、それ以上支払うことなくソリューションをデプロイできます。各マシンにMatlabコンパイラランタイム(MCR)をインストールする必要がありますが、これは無料であることに注意してください。
以下は、 MATLAB コードを Java クラスとして配布できるパッケージです。