Использование структур MATLAB на Java

Структуры MATLAB

Структуры 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();
    }
}

Получение Struct от MATLAB

Функция 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();
    }
}

Похожие темы