Используя комплексные переменные на 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();
    }
}

Похожие темы