一些MATLAB®函数接受一个结构体
的名称-值对作为输入参数。用于Java的MATLAB引擎API®提供了com.mathworks.matlab.engine.Struct
类以在Java中创建此数据结构并将其传递给MATLAB,在MATLAB中将其转换为MATLAB结构体
.
一些MATLAB函数接受结构体
输入要求字段值为MATLAB字符向量(字符
)而不是MATLAB字符串(字符串
).要创建Java结构体
使用正确的值类型,转换为字符串
来字符
数组,然后将变量传递给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函数需要字符
输入时,您可以转换Java字符串
在函数调用中传递给MATLAB。例如,MATLABeval
功能要求字符
输入:
Double result = engine。函数宏指令(“eval”,“3 + 5”);未定义函数'eval'用于输入类型为'string'的参数。.
传递一个字符
阵列工作正常。
Double result = engine。函数宏指令(“eval”、“3 + 5”.toCharArray ());
您可以使用对象的句柄来设置MATLAB图形对象属性的值。将属性名和属性值作为Java传递字符
数组传递给MATLAB函数时。
双[][]data = {{1.0, 2.0, 3.0}, {-1.0, -2.0, -3.0}};HandleObject[] h = eng。函数宏指令(“阴谋”,(对象)数据);字符串属性=(“HitTest”);字符串值= ("off");eng。feval(0,"set", h, property.toCharArray(), value.toCharArray());
一些MATLAB函数,如√6
将输入限制为双
或单
精度值。MATLAB引擎将Java整数转换为MATLABint32
值。对于不接受整数值的MATLAB函数,请确保传递适当的数值。
Double result = engine。函数宏指令“√”,4);未定义函数'sqrt'用于输入类型为'int32'的参数。
传递double值是正确的。
Double result = engine。函数宏指令“√”,4.0);