このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
MatlabEngine
の函数宏指令
メソッドおよびfevalAsync
メソッドを使用して,Java®からMATLAB®関数を実行することができます。これらのメソッドはMATLAB関数函数宏指令
のように機能します。函数宏指令
とfevalAsync
は,関数の実行結果をJavaに返す場合,またはJavaからの引数を渡す場合に使用します。
MATLAB関数を呼び出すには,以下を実行します。
関数名を文字列として渡します。
MATLAB関数に必要な入力引数を定義します。
MATLAB関数で想定される出力の数を指定します(指定されていない場合は1と仮定)。
MATLAB関数の出力の適切な戻り値の型を定義します。
ライターを使用してMATLABコマンドウィンドウからの出力をJavaにリダイレクトします。
また,MatlabEngine
のeval
メソッドとevalAsync
メソッドを使用してMATLAB式を評価することもできます。これらのメソッドを使うとMATLABワークスペースで変数を作成できるようになりますが,その場合,値は返されません。
このコード例では,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
に指定します。