Java から MATLAB への変数の引き渡し
変数の渡し方
Java® 変数を次の方法で MATLAB® に渡すことができます。
MatlabEngineのfevalメソッドとfevalAsyncメソッドの呼び出しで、変数を関数の引数として渡す。関数呼び出しの引数として渡される変数は、MATLAB ベース ワークスペースには保存されません。MatlabEngineのputVariableメソッドとputVariableAsyncメソッドを使用して、変数を MATLAB ベース ワークスペースに配置する。
型変換の詳細については、Java データ型の変換を参照してください。
関数の引数の引き渡し
このコード例では、多項式 の係数を 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();
}
}