Можно оценить операторы MATLAB® от Java® с помощью eval
MatlabEngine
и методов evalAsync
. Эти методы подобны функции eval
MATLAB. Однако eval
и методы evalAsync
не возвращают результаты оценки выражения MATLAB.
Можно также использовать feval
MatlabEngine
и методы fevalAsync
, чтобы вызвать функции MATLAB. Эти методы позволяют вам передать переменные рабочему пространству MATLAB и возвращаемые значения на Java.
Входные параметры, названные в строке, должны существовать в рабочем пространстве MATLAB. Можно присвоить результаты оценки к переменным в строке оператора. Имена переменных, которые вы присваиваете в операторе, создаются в базовом рабочем пространстве MATLAB. MATLAB не требует, чтобы вы инициализировали переменные, созданные в выражении.
Чтобы возвратить переменные, созданные в рабочем пространстве MATLAB, используйте getVariable
MatlabEngine
или методы getVariableAsync
.
Этот пример кода выполняет математическую функцию по заданной области с помощью двух выражений MATLAB. Функция meshgrid
создает переменные MATLAB X
, Y
и Z
в рабочем пространстве MATLAB. Эти переменные используются математическим выражением в следующем вызове evalAsync
.
Метод getVariable
MatlabEngine
возвращает результат оценки на Java.
import com.mathworks.engine.*; public class javaEvalFunc { public static void main(String[] args) throws Exception { MatlabEngine eng = MatlabEngine.startMatlab(); eng.evalAsync("[X, Y] = meshgrid(-2:0.2:2);"); eng.evalAsync("Z = X .* exp(-X.^2 - Y.^2);"); Object[] Z = eng.getVariable("Z"); eng.close(); } }