MATLAB® массивы ячеек могут содержать векторы символов переменной длины в каждой камере. Некоторые функции MATLAB требуют массивов векторов символов в качестве входных параметров. Используйте com.mathworks.matlab.types.CellStr
класс, чтобы задать массив ячеек из векторов символов в Java®.
Движок MATLAB преобразует массивы ячеек MATLAB векторов символов в Java String
массивы, переданные из MATLAB в Java.
Этот пример кода создает MATLAB containers.Map
образец путем передачи CellStr
объект и двойной массив в качестве аргументов MATLAB containers.Map
конструктор.
Потому что containers.Map
является MATLAB handle
класс, задайте возвращенный тип как com.mathworks.matlab.types.HandleObject
.
The containers.Map
keys
метод возвращает MATLAB cellstr
с именами ключей. Однако MatlabEngine
feval
метод возвращает 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(); } }