Передача Java CellStr MATLAB

MATLAB Массивы ячеек

Массивы ячеек MATLAB® могут содержать векторы символов переменной длины в каждой ячейке. Некоторые функции MATLAB требуют массивов ячеек из символьных векторов как входных параметров. Используйте класс com.mathworks.matlab.types.CellStr, чтобы задать массив ячеек из символьных векторов в Java®.

Движок MATLAB преобразовывает массивы ячеек из символьных векторов MATLAB в Java массивы String, когда передано от MATLAB до Java.

Создание CellStr

Этот пример кода создает экземпляр containers.Map MATLAB путем передачи объекта CellStr и двойного массива в качестве аргументов конструктору containers.Map MATLAB.

Поскольку containers.Map является классом handle MATLAB, задайте возвращенный тип как com.mathworks.matlab.types.HandleObject.

Метод keys containers.Map возвращает cellstr MATLAB с ключевыми именами. Однако метод feval MatlabEngine возвращает массив String в Java.

import com.mathworks.engine.*;
import com.mathworks.matlab.types.*;

public class CellArrays {
    public static void main(String[] args) throws Exception {
        MatlabEngine eng = MatlabEngine.startMatlab();
        CellStr keyCellStr = new CellStr(new String[]{"One", "Two", "Three"});
        double[] valueObject = {1.0, 2.0, 3.0};
        HandleObject myMap = eng.feval("containers.Map", keyCellStr, valueObject);
        String[] keysArray = eng.feval("keys", myMap);
        for (String e: keysArray) {
            System.out.println(e);
        }
        eng.close();
    }
}

Похожие темы