## Using Complex Variables in Java

### Complex Variables in MATLAB

MATLAB® numeric types can represent complex numbers. The MATLAB Engine API supports complex variables in Java® using the `com.mathworks.matlab.types.Complex` class. Using this class, you can:

• Create complex variables in Java and pass these variables to MATLAB.

• Get complex variables from the MATLAB base workspace.

MATLAB always uses double precision values for the real and imaginary parts of complex numbers.

### Get Complex Variables from MATLAB

This example code uses MATLAB functions to:

• Find the roots of a polynomial (`roots`)

• Find the complex conjugate of the complex roots (`conj`)

• Find the real result of multiplying the complex number array by its conjugate.

Use the `getVariable` method to return the complex variables to 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(); } }```

### Pass Complex Variable to MATLAB Function

This example code creates a `com.mathworks.matlab.types.Complex` variable in Java and passes it to the MATLAB `real` function. This function returns the real part of the complex number. The value returned by MATLAB is of type `double` even though the original variable created in Java is an `int`.

```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(); } }```