exponenta event banner

Использование сложных переменных в 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 и передает ее в 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();
    }
}

Связанные темы