Массивы ячеек MATLAB® могут содержать векторы символов переменной длины в каждой ячейке. Некоторые функции MATLAB требуют массивов ячеек из символьных векторов как входных параметров. Используйте класс com.mathworks.matlab.types.CellStr
, чтобы задать массив ячеек из символьных векторов в Java®.
Движок MATLAB преобразовывает массивы ячеек из символьных векторов MATLAB в Java массивы String
, когда передано от MATLAB до Java.
Этот пример кода создает экземпляр 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(); } }