MATLAB® Указатели объектов являются образцами из handle
класс. Доступ к объектам указателя MATLAB позволяет вам задать значения общественной собственности на этих объектах. Для примера все графические объекты MATLAB и объекты пользовательского интерфейса являются указателем объектами.
HandleObject
КлассИспользуйте com.mathworks.matlab.types.HandleObject
класс, чтобы представлять указатели объектов, возвращенные из MATLAB в Java®. Вы можете пройти HandleObject
образец только к сеансу работы с MATLAB, в котором он был создан. Вы не можете создать HandleObject
на Java.
MATLAB plot
функция возвращает указатель объектов ссылки на линии в графике. Используйте эти указатели с set
функция для изменения внешнего вида графика путем изменения свойств линий.
Этот пример выполняет следующие вызовы функций в MATLAB:
% Create a 2-by-3 array of doubles data = [1,2,3;-1,-2,-3]; % Plot the data and return the line handles h = plot(data); % Set the line width to 2 points set(h,'LineWidth',2); % Pause for 5 seconds, just to see the result pause(5)
Код Java использует следующие шаги, чтобы вызвать выполнение кода MATLAB, как описано:
Создайте 2D double
массив, называемый data
.
Приведите data
массив в Object
MATLAB интерпретирует массив как один аргумент в plot
.
Возврат HandleObject
массивы направленности h
из MATLAB с указателями линий.
Вызовите MATLAB set
функция для установки LineWidth
свойство маркеров линий равное 2.0. Преобразуйте имя LineWidth
свойство от String
в char[]
потому что set
функция требует, чтобы имена свойства были MATLAB char
массивы.
Пауза для 5
секунд, а затем закройте движок MATLAB.
import com.mathworks.engine.*; import com.mathworks.matlab.types.*; public class PassHandleObject { public static void main(String[] args) throws Exception { MatlabEngine eng = MatlabEngine.startMatlab(); double[][] data = {{1.0, 2.0, 3.0}, {-1.0, -2.0, -3.0}}; HandleObject[] h = eng.feval("plot", (Object) data); String lw = ("LineWidth"); eng.feval(0, "set", h, lw.toCharArray(), 2.0); eng.eval("pause(5)"); eng.close(); } }