Массивы ячеек 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.
containers.Map keys метод возвращает cellstr MATLAB с ключевыми именами. Однако 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();
}
}