主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

JavaからのMATLAB関数の実行

MATLAB関数の呼び出し

MatlabEngine函数宏指令メソッドおよびfevalAsyncメソッドを使用して,Java®からMATLAB®関数を実行することができます。これらのメソッドはMATLAB関数函数宏指令のように機能します。函数宏指令fevalAsyncは,関数の実行結果をJavaに返す場合,またはJavaからの引数を渡す場合に使用します。

MATLAB関数を呼び出すには,以下を実行します。

  • 関数名を文字列として渡します。

  • MATLAB関数に必要な入力引数を定義します。

  • MATLAB関数で想定される出力の数を指定します(指定されていない場合は1と仮定)。

  • MATLAB関数の出力の適切な戻り値の型を定義します。

  • ライターを使用してMATLABコマンドウィンドウからの出力をJavaにリダイレクトします。

また,MatlabEngineevalメソッドとevalAsyncメソッドを使用してMATLAB式を評価することもできます。これらのメソッドを使うとMATLABワークスペースで変数を作成できるようになりますが,その場合,値は返されません。

戻り引数を1つ指定した関数の実行

このコード例では,MATLAB関数√6を使用して、双の配列における要素の平方根を求めます。函数宏指令メソッドは,関数√6の呼び出しの結果が含まれた双配列を返します。

进口com.mathworks.engine。*;public class javaFevalFunc{public static void main(String[] args) throws Exception{MatlabEngine eng = MatlabEngine. startmatlab ();Double [] a = {2.0,4.0, 6.0};Double[]根= eng。函数宏指令“√”);for (double e: root) {System.out.println(e);} eng.close ();} }

戻り引数を複数指定した関数の実行

このコード例では,MATLAB関数肾小球囊性肾病を使用して,入力引数として渡される2つの整数値から最大公約数とベズー係数を求めます。函数宏指令メソッドは,関数肾小球囊性肾病の呼び出しの結果が格納されたオブジェクト配列を返します。戻り値は整数です。

MATLAB関数肾小球囊性肾病は3つの出力引数を返すため,戻り値の数を函数宏指令メソッドの最初の引数として指定します。

进口com.mathworks.engine。*;public class javaFevalFcnMulti {public static void main(String[] args) throws Exception {MatlabEngine eng = MatlabEngine. startmatlab ();对象[]results = eng. txt函数宏指令(3, "gcd", 40, 60); Integer G = (Integer)results[0]; Integer U = (Integer)results[1]; Integer V = (Integer)results[2]; eng.close(); } }

出力引数の数を指定する場合

MatlabEngine函数宏指令メソッドとfevalAsyncメソッドを使用すると,MATLAB関数によって返される出力引数の数を指定できます。既定では,MATLAB関数の出力引数の数は1であると仮定されます。

出力なしで,あるいは複数の出力を指定してMATLAB関数の呼び出す場合は,その数を函数宏指令またはfevalAsyncに渡す最初の引数として指定します。

たとえば,次のコードでは,3出力引数の構文を指定してMATLAB関数肾小球囊性肾病を呼び出しています。

对象[]results = eng. txt函数宏指令(3, "gcd", 40, 60);

MATLAB関数の動作は,要求された出力の数によって異なる場合があります。一部の関数では,出力を返さないようにすることや,指定数の出力を返すことができます。たとえば,MATLAB関数暂停を実行すると,指定した秒数だけ実行が停止します。しかし,出力引数を指定して暂停を呼び出すと,関数によってただちにステータス値が返されます。したがって,次のコードでは函数宏指令が1つの出力引数を要求しているため,MATLABは一時停止しません。

eng。函数宏指令(“暂停”,10);

要求された10秒間MATLABの実行を停止するには,出力の数を0に指定します。

eng。函数宏指令(0,“暂停”,10);

メモ

MATLAB関数が必ず出力なしで呼び出されるようにするには,戻り引数の数を0に指定します。

関連するトピック