Main Content

Java から MATLAB への変数の引き渡し

変数の渡し方

Java® 変数を次の方法で MATLAB® に渡すことができます。

  • MatlabEnginefeval メソッドと fevalAsync メソッドの呼び出しで、変数を関数の引数として渡す。関数呼び出しの引数として渡される変数は、MATLAB ベース ワークスペースには保存されません。

  • MatlabEngineputVariable メソッドと putVariableAsync メソッドを使用して、変数を MATLAB ベース ワークスペースに配置する。

型変換の詳細については、Java データ型の変換を参照してください。

関数の引数の引き渡し

このコード例では、多項式 x2x6 の係数を MATLAB 関数 roots に渡します。

  • double 配列 p を定義して、MATLAB 関数 roots の引数として渡す。

  • double 配列 r を定義して、戻り値を受け入れる。

import com.mathworks.engine.*;

public class javaPassArg{
    public static void main(String[] args) throws Exception{
        MatlabEngine eng = MatlabEngine.startMatlab();
        double[] p =  {1.0, -1.0, -6.0};
        double[] r = eng.feval("roots", p);
        for (double e: r) {
            System.out.println(e);
        }
        eng.close();
    }
}

MATLAB ワークスペースでの変数の配置

このコード例では、MATLAB ワークスペースに変数を配置し、これらの変数を MATLAB による MATLAB 関数 complex の呼び出しで引数として使用します。MATLAB の who コマンドによって、ワークスペース変数の一覧が表示されます。

import com.mathworks.engine.*;
import java.util.Arrays;

public class javaPutVar {
    public static void main(String[] args) throws Exception {
        MatlabEngine eng = MatlabEngine.startMatlab();
        eng.putVariable("x", 7.0);
        eng.putVariable("y", 3.0);
        eng.eval("z = complex(x, y);");
        String[] w = eng.feval("who");
        System.out.println("MATLAB workspace variables " + Arrays.toString(w));
        eng.close();
    }
}

関連するトピック