Используя объекты указателя MATLAB на Java

Объекты указателя MATLAB

Объекты указателя MATLAB® являются экземплярами handle класс. Доступ к объектам указателя MATLAB позволяет вам установить значения публичных свойств на тех объектах. Например, все графические объекты MATLAB и объекты пользовательского интерфейса являются объектами указателя.

Java HandleObject Класс

Используйте com.mathworks.matlab.types.HandleObject класс, чтобы представлять объекты указателя, возвращенные от MATLAB до Java®. Можно передать HandleObject экземпляр только к сеансу работы с MATLAB, в котором это было создано. Вы не можете создать HandleObject на Java.

Установка Свойств графического объекта из Java

plot MATLAB функция возвращает объекты указателя, ссылающиеся на линии в графике. Используйте эти указатели с 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 с указателями линии.

  • Вызовите set MATLAB функционируйте, чтобы установить 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();
    }
}

Похожие темы