Main Content

Java からの MATLAB ステートメントの評価

MATLAB ステートメントの評価

MatlabEngineeval メソッドと evalAsync メソッドを使用して、Java® から MATLAB® ステートメントを評価することができます。これらのメソッドは MATLAB 関数 eval と同様のものです。ただし、eval メソッドと evalAsync メソッドは MATLAB ステートメントの評価結果を返しません。

また、MatlabEnginefeval メソッドと fevalAsync メソッドを使用して MATLAB 関数を呼び出すこともできます。これらのメソッドにより、変数を MATLAB ワークスペースに渡して値を Java に返すことができます。

文字列内で名前がつけられた入力引数は、MATLAB ワークスペースになければなりません。評価の結果は、ステートメント文字列内で変数に代入することができます。ステートメントで代入する変数名は、MATLAB ベース ワークスペースで作成されます。MATLAB では式で作成された変数を初期化する必要はありません。

MATLAB ワークスペースで作成された変数を返すには、MatlabEnginegetVariable メソッドまたは getVariableAsync メソッドを使用します。

MATLAB での数学関数の評価

このコード例では、2 つの MATLAB ステートメントを使用して、特定の定義域で数学関数を評価しています。関数 meshgrid は MATLAB 変数 XYZ を MATLAB ワークスペースで作成します。これらの変数は、evalAsync を次に呼び出したときに数学式で使用されます。

MatlabEnginegetVariable メソッドは評価の結果を 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();
        }
}

関連するトピック