Используя комплексные переменные на Java

Комплексные переменные в MATLAB

MATLAB® числовые типы может представлять комплексные числа. API MATLAB Engine поддерживает комплексные переменные в Java® с помощью класса com.mathworks.matlab.types.Complex. Используя этот класс, вы можете:

  • Создайте комплексные переменные на 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

Этот пример кода создает переменную com.mathworks.matlab.types.Complex на Java и передает его функции real MATLAB. Эта функция возвращает действительную часть комплексного числа. Значение, возвращенное MATLAB, имеет тип double даже при том, что исходной переменной, созданной на Java, является 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();
    }
}

Похожие темы