MATLAB® структуры содержат данные и ссылаются на них с помощью имен полей. Каждое поле может содержать данные любого типа. Код MATLAB обращается к данным в структуре с помощью записи через точку вида structName.fieldName. Класс структуры MATLAB: struct.
Java® com.mathworks.matlab.types.Struct класс позволяет вам:
Создайте Struct в Java и передать его в MATLAB.
Создайте struct MATLAB и верните его на Java.
The com.mathworks.matlab.types.Struct класс реализует java.util.Map интерфейс. Однако вы не можете изменить отображения, ключи или значения Struct возвращается из MATLAB.
Struct в функцию MATLABMATLAB set функция устанавливает свойства графических объектов MATLAB. Установка нескольких свойств в одном вызове равными set, удобно использовать MATLAB struct. Определите это struct с именами полей, которые совпадают с именами свойств, которые вы хотите задать. Значение, на которое ссылается поле, является значением, присвоенным свойству.
Этот пример кода выполняет следующие шаги:
Запустите MATLAB.
Передайте двойной массив в MATLAB plot функция.
Верните объект указателя MATLAB на Java как com.mathworks.matlab.types.HandleObject.
Создайте com.mathworks.matlab.types.Struct использование имен свойства и значений.
Создайте график MATLAB и отобразите его для 5 секунд.
Передайте HandleObject и Struct в MATLAB set функция, использующая 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();
}
}MATLAB axes функция создает оси для графика и возвращает указатель объекта ссылку. MATLAB get функция, при вызове с одним выходом, возвращает MATLAB struct со свойствами графического объекта.
Этот пример кода:
Создает графический объект 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();
}
}