Main Content

Java での複素変数の使用

MATLAB の複素変数

MATLAB® の数値型によって複素数を表すことができます。MATLAB エンジン API は、com.mathworks.matlab.types.Complex クラスを使用して Java® で複素変数をサポートしています。このクラスを使用すると、以下のことができます。

  • Java で複素変数を作成して、その変数を MATLAB に渡す。

  • MATLAB ベース ワークスペースから複素変数を取得する。

MATLAB では複素数の実数部と虚数部に必ず倍精度値を使用します。

MATLAB からの複素変数の取得

このコード例では、MATLAB 関数を使用して以下のことを行っています。

  • 多項式の根を求める (roots)

  • 複素根の複素共役を求める (conj)

  • 複素数配列をその共役で乗算した結果の実数を求める

getVariable メソッドを使用して、複素変数を Java に返します。

import com.mathworks.engine.*;
import com.mathworks.matlab.types.Complex;

public class javaGetVar {
    public static void main(String[] args) throws Exception {
        MatlabEngine eng = MatlabEngine.startMatlab();
        eng.eval("z = roots([1.0, -1.0, 6.0]);");
        eng.eval("zc = conj(z);");
        eng.eval("rat = z.*zc;");
        Complex[] z = eng.getVariable("z");
        Complex[] zc = eng.getVariable("zc");
        double[] rat = eng.getVariable("rat");
        for (Complex e: z) {
            System.out.println(e);
        }
        for (Complex e: zc) {
            System.out.println(e);
        }
        for (double e: rat) {
            System.out.println(e);
        }
        eng.close();
    }
}

複素変数を MATLAB 関数に渡す

このコード例では、Java で変数 com.mathworks.matlab.types.Complex を作成し、MATLAB 関数 real に渡します。この関数は複素数の実数部を返します。Java で作成された元の変数は int ですが、MATLAB により返される値は double 型となります。

import com.mathworks.engine.*;
import com.mathworks.matlab.types.Complex;

public class javaComplexVar {
    public static void main(String[] args) throws Exception {
        MatlabEngine eng = MatlabEngine.startMatlab();
        int r = 8;
        int i = 3;
        Complex c = new Complex(r, i);
        double real = eng.feval("real", c);
        eng.close();
    }
}

関連するトピック