exponenta event banner

Использование объектов-дескрипторов MATLAB в Java

Объекты-дескрипторы MATLAB

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

Ява HandleObject Класс

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

Задание свойств графического объекта из 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();
    }
}

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