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

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

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

Некоторые функции MATLAB® принимают 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. Например, функция eval MATLAB требует входа 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);

Похожие темы