Неправильные типы данных Java

Строка Java к вектору символа MATLAB

Struct векторов символов

Некоторый MATLAB® функции принимают a struct из пар "имя-значение" как входные параметры. API MATLAB Engine для Java® обеспечивает com.mathworks.matlab.engine.Struct класс, чтобы создать эту структуру данных на Java и передать его MATLAB, где это преобразовано в struct MATLAB.

Некоторые функции MATLAB, которые принимают struct введите требуют, чтобы значения полей были векторами символов MATLAB (char) вместо строк MATLAB (string). Создать Java Struct с правильным типом значений преобразуйте от String к char массив прежде, чем передать переменную MATLAB.

Можно использовать toCharArray метод для преобразования:

char[] on = "on".toCharArray();
char[] yOut = "yOut".toCharArray();
char[] tOut = "tOut".toCharArray();
Struct simParam = new Struct("SaveOutput", on, "OutputSaveName",
        yOut,"SaveTime", on, "TimeSaveName", tOut);

Аргумент строки к вектору символа

Когда функции MATLAB требуют char входные параметры, можно преобразовать Java String в вызове функции, переданном MATLAB. Например, MATLAB eval функция требует char входной параметр:

double result = engine.feval("eval", "3+5");
Undefined function 'eval' for input arguments of type 'string'..

Передача char массив работает правильно.

double result = engine.feval("eval", "3+5".toCharArray());

Установка Свойств графического объекта из Java

Можно установить значения свойств графического объекта MATLAB с помощью указателя объекта. Передайте имена свойства и значения свойств как Java char массивы при передаче функциям MATLAB.

double[][] data = {{1.0, 2.0, 3.0}, {-1.0, -2.0, -3.0}};
HandleObject[] h = eng.feval("plot", (Object)data);
String property = ("HitTest");
String value = ("off");
eng.feval(0,"set", h, property.toCharArray(), value.toCharArray());

Целое число Java к MATLAB дважды

Некоторые функции MATLAB, такой как sqrt ограничьте вход double или single значения точности. Движок MATLAB преобразует целые числа Java в MATLAB int32 значения. Для функций MATLAB, которые не принимают целочисленные значения, гарантируйте, что вы передаете соответствующие числовые значения.

double result = engine.feval("sqrt", 4);
Undefined function 'sqrt' for input arguments of type 'int32'.

Передача двойные работы правильно.

double result = engine.feval("sqrt", 4.0);

Похожие темы