Java からの MATLAB ステートメントの評価
MATLAB ステートメントの評価
MatlabEngine
の eval
メソッドと evalAsync
メソッドを使用して、Java® から MATLAB® ステートメントを評価することができます。これらのメソッドは MATLAB 関数 eval
と同様のものです。ただし、eval
メソッドと evalAsync
メソッドは MATLAB ステートメントの評価結果を返しません。
また、MatlabEngine
の feval
メソッドと fevalAsync
メソッドを使用して MATLAB 関数を呼び出すこともできます。これらのメソッドにより、変数を MATLAB ワークスペースに渡して値を Java に返すことができます。
文字列内で名前がつけられた入力引数は、MATLAB ワークスペースになければなりません。評価の結果は、ステートメント文字列内で変数に代入することができます。ステートメントで代入する変数名は、MATLAB ベース ワークスペースで作成されます。MATLAB では式で作成された変数を初期化する必要はありません。
MATLAB ワークスペースで作成された変数を返すには、MatlabEngine
の getVariable
メソッドまたは getVariableAsync
メソッドを使用します。
MATLAB での数学関数の評価
このコード例では、2 つの MATLAB ステートメントを使用して、特定の定義域で数学関数を評価しています。関数 meshgrid
は MATLAB 変数 X
、Y
、Z
を MATLAB ワークスペースで作成します。これらの変数は、evalAsync
を次に呼び出したときに数学式で使用されます。
MatlabEngine
の getVariable
メソッドは評価の結果を Java に返します。
import com.mathworks.engine.*; public class javaEvalFunc { public static void main(String[] args) throws Exception { MatlabEngine eng = MatlabEngine.startMatlab(); eng.evalAsync("[X, Y] = meshgrid(-2:0.2:2);"); eng.evalAsync("Z = X .* exp(-X.^2 - Y.^2);"); Object[] Z = eng.getVariable("Z"); eng.close(); } }