Java での複素変数の使用
MATLAB の複素変数
MATLAB® の数値型によって複素数を表すことができます。MATLAB エンジン API は、com.mathworks.matlab.types.Complex
クラスを使用して Java® で複素変数をサポートしています。このクラスを使用すると、以下のことができます。
Java で複素変数を作成して、その変数を MATLAB に渡す。
MATLAB ベース ワークスペースから複素変数を取得する。
MATLAB では複素数の実数部と虚数部に必ず倍精度値を使用します。
MATLAB からの複素変数の取得
このコード例では、MATLAB 関数を使用して以下のことを行っています。
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();
}
}