ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

com.mathworks.engine.MatlabEngine クラス

パッケージ: com.mathworks.engine

MATLAB を計算エンジンとして使用する Java クラス

説明

com.mathworks.engine.MatlabEngine クラスは Java® の計算エンジンとして MATLAB® プロセスを使用します。このクラスは Java 言語と MATLAB の間のインターフェイスを提供します。これにより、MATLAB の関数と式を Java から評価できるようになります。

コンストラクターの概要

MatlabEngine クラスは、MATLAB を起動するための静的メソッドと共有 MATLAB セッションに同期的または非同期的に接続するための静的メソッドを提供します。このクラスはこれらの静的メソッドでのみインスタンス化できます。

サポートされない起動オプション

エンジンは次の MATLAB 起動オプションをサポートしていません。

  • -h

  • -help

  • -?

  • -n

  • -e

  • -softwareopengl

  • -logfile

MATLAB の起動オプションの詳細については、よく使われる起動オプションを参照してください。

メソッドの概要

静的メソッド

startMatlab

MATLAB を同期的に起動します。

startMatlabAsync

MATLAB を非同期的に起動します。

findMatlab

ローカル マシン上の使用可能なすべての共有 MATLAB セッションを同期的に検索します。

findMatlabAsync

ローカル マシン上の使用可能なすべての共有 MATLAB セッションを非同期的に検索します。

connectMatlab

ローカル マシン上の共有 MATLAB セッションに同期的に接続します。

connectMatlabAsync

ローカル マシン上の共有 MATLAB セッションに非同期的に接続します。

メンバー変数

NULL_WRITER

MATLAB コマンド ウィンドウの内容を無視するライターを使用します。

メンバー関数

feval

引数をもつ MATLAB 関数を同期的に評価します。

fevalAsync

引数をもつ MATLAB 関数を非同期的に評価します。

eval

MATLAB 式を文字列として同期的に評価します。

evalAsync

MATLAB 式を文字列として非同期的に評価します。

getVariable

MATLAB ベース ワークスペースから変数を同期的に取得します。

getVariableAsync

MATLAB ベース ワークスペースから変数を非同期的に取得します。

putVariable

MATLAB ベース ワークスペースに変数を同期的に入れます。

putVariableAsync

MATLAB ベース ワークスペースに変数を非同期的に入れます。

disconnect

現在の MATLAB セッションから同期的に切断します。

disconnectAsync

現在の MATLAB セッションから非同期的に切断します。

quit

現在の MATLAB セッションのシャットダウンを同期的に強制実行します。

quitAsync

現在の MATLAB セッションのシャットダウンを非同期的に強制実行します。

close

現在の MATLAB セッションを切断または終了します。

メソッドの詳細

startMatlab

static MatlabEngine startMatlab(String[] options)

static MatlabEngine startMatlab()

説明

MATLAB を同期的に起動します。

パラメーター

String[] options

MATLAB エンジンを起動するために使用する起動オプション。オプションについては、起動と終了を参照してください。

戻り値

MatlabEngine のインスタンス

スロー

com.mathworks.engine.EngineException

MATLAB が起動しません。

MatlabEngine engine = MatlabEngine.startMatlab();

startMatlabAsync

static Future<MatlabEngine> startMatlabAsync(String[] options)

static Future<MatlabEngine> startMatlabAsync()

説明

MATLAB を非同期的に起動します。MATLAB が起動してからは、キャンセルは NOP になります。

パラメーター

String[] options

MATLAB を起動するために使用する起動オプション。オプションについては、起動と終了を参照してください。

戻り値

Future<MatlabEngine> のインスタンス

Future<MatlabEngine> future = MatlabEngine.startMatlabAsync();

findMatlab

static String[] findMatlab()

説明

ローカル マシン上のすべての共有 MATLAB セッションを同期的に検索します。

戻り値

ローカル マシン上のすべての共有 MATLAB セッション名の配列。ローカル マシンに使用可能な共有 MATLAB セッションがない場合は、空のベクトル。

スロー

com.mathworks.engine.EngineException

MATLAB セッションの検索が失敗した場合。

String[] engines = MatlabEngine.findMatlab();

findMatlabAsync

static Future<String[]> findMatlabAsync()

説明

ローカル マシン上のすべての共有 MATLAB セッションを非同期的に検索します。

戻り値

Future<String[]> のインスタンス

Future<String[]> future = MatlabEngine.findMatlabAsync();

connectMatlab

static MatlabEngine connectMatlab(String name)

static MatlabEngine connectMatlab()

説明

ローカル マシン上の共有 MATLAB セッションに同期的に接続します。

  • 共有 MATLAB セッションの名前を指定してもエンジンがその名前のセッションを見つけられない場合、エンジンは例外をスローします。

  • 名前を指定せず、使用可能な共有 MATLAB セッションがない場合、エンジンは既定のオプションを使用して新しい共有 MATLAB セッションを開始します。

  • 名前を指定せず、使用可能な共有 MATLAB セッションが存在する場合、エンジンは使用可能な最初のセッションに接続します。

パラメーター

String name

共有 MATLAB セッションの名前。findMatlabを使用して、共有 MATLAB セッションの名前を取得します。

戻り値

MatlabEngine のインスタンス

スロー

com.mathworks.engine.EngineException

MATLAB の起動または接続が失敗しました。

MatlabEngine engine = MatlabEngine.connectMatlab();

connectMatlabAsync

static Future<MatlabEngine> connectMatlabAsync(String name)

static Future<MatlabEngine> connectMatlabAsync

説明

ローカル マシン上の共有 MATLAB セッションに非同期的に接続します。動作は connectMatlab と同じですが、メカニズムは非同期です。MATLAB への接続が確立されてからは、キャンセルは NOP になります。

パラメーター

String name

共有 MATLAB セッションの名前。

戻り値

Future<MatlabEngine> のインスタンス

Future<MatlabEngine> future = MatlabEngine.connectMatlabAsync();

feval

<T> T feval(int nlhs, String func, Writer output, Writer error, Object… args)

<T> T feval(int nlhs, String func, Object… args)

<T> T feval(String func, Writer output, Writer error, Object… args)

<T> T feval(String func, Object… args)

説明

入力引数をもつ MATLAB 関数を同期的に評価します。

パラメーター

String func

評価する MATLAB 関数またはスクリプトの名前。

int nlhs

予期される出力の数。既定値は 1 です。

nlhs1 より大きい場合、戻り値の型 T<Object[]> でなければなりません。

nlhs0 の場合、戻り値の型 T<Void> または <?> でなければなりません。

nlhs1 の場合、戻り値の型 T は想定される型、または <Object> (型が不明な場合) です。

Writer output

MATLAB 関数からの標準出力を格納するために使用するストリーム。ライターを指定しない場合、出力はコマンド ウィンドウまたはターミナルに書き込まれます。MATLAB コマンド ウィンドウからの出力を無視するには、NULL_WRITER を使用します。

Writer error

MATLAB 関数からの標準エラーを格納するために使用するストリーム。ライターを指定しない場合、出力はコマンド ウィンドウまたはターミナルに書き込まれます。MATLAB コマンド ウィンドウからのエラー メッセージを無視するには、NULL_WRITER を使用します。

Object... args

MATLAB 関数に渡す引数。

戻り値

MATLAB 関数の実行結果

スロー

java.util.concurrent.CancellationException

MATLAB 関数の評価がキャンセルされました。

java.lang.InterruptedException

MATLAB 関数の評価が中断されました。

java.lang.IllegalStateException

MATLAB セッションを使用できません。

com.mathworks.engine.MatlabExcecutionException

関数に MATLAB ランタイム エラーがあります。

com.mathworks.engine.UnsupportedTypeExeption

サポートされていないデータ型があります。

com.mathworks.engine.MatlabSyntaxException

MATLAB 関数に構文エラーが存在します。

double result = engine.feval("sqrt", 4);

fevalAsync

<T> Future<T> fevalAsync(int nlhs, String func, Writer output, Writer error, Object… args)

<T> Future<T> fevalAsync(int nlhs, String func, Object… args)

<T> Future<T> fevalAsync(String func, Writer output, Writer error, Object… args)

<T> Future<T> fevalAsync(String func, Object… args)

説明

入力引数をもつ MATLAB 関数を非同期的に評価します。

パラメーター

String func

評価する MATLAB 関数またはスクリプトの名前。

int nlhs

予期される出力の数。既定値は 1 です。

nlhs1 より大きい場合、戻り値の型 T<Object[]> でなければなりません。

nlhs0 の場合、戻り値の型 T<Void> または <?> でなければなりません。

nlhs1 の場合、戻り値の型 T は想定される型、または <Object> (型が不明な場合) です。

Writer output

MATLAB 関数からの標準出力を格納するために使用するストリーム。ライターを指定しない場合、出力はコマンド ウィンドウまたはターミナルに書き込まれます。MATLAB コマンド ウィンドウからの出力を無視するには、NULL_WRITER を使用します。

Writer error

MATLAB 関数からの標準エラーを格納するために使用するストリーム。ライターを指定しない場合、出力はコマンド ウィンドウまたはターミナルに書き込まれます。MATLAB コマンド ウィンドウからのエラー メッセージを無視するには、NULL_WRITER を使用します。

Object... args

MATLAB 関数に渡す引数。

戻り値

Future<T> のインスタンス

スロー

java.lang.IllegalStateException

MATLAB セッションを使用できません。

Future<Double> future = engine.fevalAsync("sqrt", 4);

eval

void eval(String command, Writer output, Writer error)

void eval(String command)

説明

MATLAB ステートメントを文字列として同期的に評価します。

パラメーター

String command

評価する MATLAB ステートメント。

Writer output

MATLAB ステートメントからの標準出力を格納するために使用するストリーム。ライターを指定しない場合、出力はコマンド ウィンドウまたはターミナルに書き込まれます。MATLAB コマンド ウィンドウからの出力を無視するには、NULL_WRITER を使用します。

Writer error

MATLAB ステートメントからの標準エラーを格納するために使用するストリーム。ライターを指定しない場合、出力はコマンド ウィンドウまたはターミナルに書き込まれます。MATLAB コマンド ウィンドウからのエラー メッセージを無視するには、NULL_WRITER を使用します。

スロー

java.util.concurrent.CancellationException

MATLAB 関数の評価がキャンセルされました。

java.lang.InterruptedException

MATLAB 関数の評価が中断されました。

java.lang.IllegalStateException

MATLAB セッションを使用できません。

com.mathworks.engine.MatlabExcecutionException

実行時に MATLAB ステートメントでエラーが発生しました。

com.mathworks.engine.MatlabSyntaxException

MATLAB ステートメントに構文エラーがあります。

engine.eval("result = sqrt(4)");

evalAsync

Future<Void> evalAsync(String command, Writer output, Writer error)

Future<Void> evalAsync(String command)

説明

MATLAB ステートメントを文字列として非同期的に評価します。

パラメーター

String command

評価する MATLAB ステートメント。

Writer output

MATLAB ステートメントからの標準出力を格納するために使用するストリーム。ライターを指定しない場合、出力はコマンド ウィンドウまたはターミナルに書き込まれます。MATLAB コマンド ウィンドウからの出力を無視するには、NULL_WRITER を使用します。

Writer error

MATLAB ステートメントからの標準エラーを格納するために使用するストリーム。ライターを指定しない場合、出力はコマンド ウィンドウまたはターミナルに書き込まれます。MATLAB コマンド ウィンドウからのエラー メッセージを無視するには、NULL_WRITER を使用します。

戻り値

Future<Void> のインスタンス

スロー

java.lang.IllegalStateException

MATLAB セッションを使用できません。

Future<Void> future = engine.evalAsync("sqrt(4)");

getVariable

<T> T getVariable(String varName)

説明

MATLAB ベース ワークスペースから変数を取得します。

パラメーター

String varName

MATLAB ベース ワークスペース内の変数の名前。

戻り値

MATLAB ベース ワークスペースから渡される変数

スロー

java.util.concurrent.CancellationException

この関数の評価がキャンセルされました。

java.lang.InterruptedException

この関数の評価が中断されました。

java.lang.IllegalStateException

MATLAB セッションを使用できません。

double myVar = engine.getVariable("myVar");

getVariableAsync

<T> Future<T> getVariableAsync(String varName)

説明

MATLAB ベース ワークスペースから変数を非同期的に取得します。

パラメーター

String varName

MATLAB ベース ワークスペースの変数の名前。

戻り値

Future<T> のインスタンス

スロー

java.lang.IllegalStateException

MATLAB セッションを使用できません。

Future<Double> future = engine.getVariableAsync("myVar");

putVariable

void putVariable(String varName, T varData)

説明

MATLAB ベース ワークスペースに変数を入れます。

パラメーター

String varName

MATLAB ベース ワークスペースで作成する変数の名前。

T varData

MATLAB ベース ワークスペースで作成する変数の値。

スロー

java.util.concurrent.CancellationException

この関数の評価がキャンセルされました。

java.lang.InterruptedException

この関数の評価が中断されました。

java.lang.IllegalStateException

MATLAB セッションを使用できません。

engine.putVariable("myVar", 100);

putVariableAsync

Future<Void> putVariableAsync(String varName, T varData)

説明

MATLAB ベース ワークスペースに変数を非同期的に入れます。

パラメーター

String varName

MATLAB ベース ワークスペースで作成する変数の名前。

T varData

MATLAB ベース ワークスペースで作成する変数の値。

戻り値

Future<Void> のインスタンス

スロー

java.lang.IllegalStateException

MATLAB セッションを使用できません。

Future<Void> future = engine.putVariableAsync("myVar", 100);

disconnect

void disconnect()

説明

現在の MATLAB セッションを切断します。

スロー

com.mathworks.engine.EngineException

現在の MATLAB セッションは切断できません。

engine.disconnect();

disconnectAsync

Future<Void> disconnectAsync()

説明

現在の MATLAB セッションを切断します。

Future<Void> future = engine.disconnectAsync();

quit

void quit()

説明

現在の MATLAB セッションのシャットダウンを強制実行します。

スロー

com.mathworks.engine.EngineException

現在の MATLAB セッションはシャットダウンできません。

engine.quit();

quitAsync

Future<Void> quitAsync()

説明

現在の MATLAB セッションを、終了まで待たず非同期的に強制シャットダウンします。

戻り値

Future<Void> のインスタンス

Future<Void> future = engine.quitAsync();

close

void close()

説明

MatlabEngine は、MatlabEngine オブジェクトに java.lang.AutoCloseable インターフェイスを実装するための close() メソッドを提供します。この close() メソッドを使用すると、try-with-resources ステートメントを使用して、ステートメントの終わりに MATLAB セッションを自動的に切断または終了することができます。

MatlabEngine close() メソッドは、コンテキストに応じて、現在の MATLAB セッションを切断または終了します。

  • Java プロセスが MATLAB セッションを既定の非共有セッションとして開始する場合、close() は MATLAB を終了します。

  • MATLAB セッションが共有セッションの場合、close() は MATLAB を Java プロセスから切断します。MATLAB は他に接続がなければ終了します。

現在の MATLAB セッションのシャットダウンまたは切断を強制的に実行するには、MatlabEngine.quit()MatlabEngine.disconnect() または非同期でこれらと同じ処理を行うメソッドを明示的に呼び出します。

engine.close();

関数の非同期的な評価

この例では、MATLAB 関数を非同期的に評価する方法を説明します。以下にワークフローを示します。

  • MATLAB セッションを開きます。

  • MATLAB 関数 sqrt に引数を指定して非同期的に呼び出します。

  • MATLAB 関数の結果を取得します。

  • MATLAB エンジンを閉じます。

import com.mathworks.engine.MatlabEngine

Future<MatlabEngine> engFuture = MatlabEngine.startMatlabAsync();
MatlabEngine engine = engFuture.get();
double myVar = 4;
Future<Double> future = engine.fevalAsync("sqrt", myVar);
double result = future.get();
System.out.println(result);

R2016b で導入