Структуры MATLAB® содержат данные, и ссылается на него с помощью имен полей. Каждое поле может содержать любой тип данных. Данные о доступах кода MATLAB в структуре с помощью записи через точку формы structName.fieldName
. Классом структуры MATLAB является struct
.
Класс Java® com.mathworks.matlab.types.Struct
позволяет:
Создайте Struct
на Java и передайте его MATLAB.
Создайте struct
MATLAB и возвратите его в Java.
Класс com.mathworks.matlab.types.Struct
реализует интерфейс java.util.Map
. Однако вы не можете изменить отображения, ключи или значения Struct
, возвращенного в MATLAB.
Передача Struct функции MATLAB
Функция set
MATLAB устанавливает свойства графических объектов MATLAB. Чтобы установить несколько свойств в одном вызове set
, удобно использовать struct
MATLAB. Задайте этот struct
с именами полей, которые совпадают с именами свойств, которые вы хотите установить. Значение, на которое ссылается поле, является значением, присвоил свойство.
Этот пример кода выполняет следующие шаги:
StartMatlab.
Передайте двойной массив функции plot
MATLAB.
Возвратите объект указателя MATLAB в Java как com.mathworks.matlab.types.HandleObject
.
Создайте com.mathworks.matlab.types.Struct
с помощью имен свойства и значений.
Создайте график MATLAB и отобразите его в течение секунд 5
.
Передайте HandleObject
и Struct
к функции set
MATLAB использование feval
. Эта функция изменяет цвет и ширину линии отображенных на графике данных.
Экспортируйте график в файл с именем jpeg
myPlot
, и закрывает связь механизма.
import com.mathworks.engine.*; import com.mathworks.matlab.types.*; public class CreateStruct { public static void main(String[] args) throws Exception { MatlabEngine eng = MatlabEngine.startMatlab(); double[] y = {1.0, 2.0, 3.0, 4.0, 5.0}; HandleObject h = eng.feval("plot", y); eng.eval("pause(5)"); double[] color = {1.0, 0.5, 0.7}; Struct s = new Struct("Color", color, "LineWidth", 2); eng.feval("set", h, s); eng.eval("print('myPlot', '-djpeg')"); eng.close(); } }
Функция axes
MATLAB создает оси для графика и возвращает ссылку на объект указателя. Функция get
MATLAB, когда названо одним выводом, возвращает struct
MATLAB со свойствами графического объекта.
Этот пример кода:
Создает графический объект MATLAB и возвращает указатель на объект как HandleObject
.
Создает структуру MATLAB, содержащую свойства и значения графического объекта, и возвращает его как Struct
.
Получает значение свойства FontName
от Struct
.
Попытки изменить значение ключа FontName
, который выдает UnsupportedOperationException
, потому что Struct
является немодифицируемым.
import com.mathworks.engine.*; import com.mathworks.matlab.types.*; public class GetStruct { public static void main(String[] args) throws Exception { MatlabEngine eng = MatlabEngine.startMatlab(); HandleObject h = eng.feval("axes"); Struct s = eng.feval("get", h); Object fontName = s.get("FontName"); System.out.println("The font name is " + fontName.toString()); try { s.put("FontName", "Times"); }catch(UnsupportedOperationException e){ e.printStackTrace(); } eng.close(); } }