Использование сложных переменных в Java

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

MATLAB® числовые типы могут представлять комплексные числа. MATLAB Engine API поддерживает сложные переменные на 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 и передает ее в MATLAB real функция. Эта функция возвращает вещественную часть комплексного числа. Значение, возвращаемое 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();
    }
}

Похожие темы