当在Java中使用MatLab函数时,由于语言语法的不同,Matlab返回多个数据时,想在Java中获取到并进行使用。查阅了网上资料,翻箱倒柜加上自己实战,得出方法如下:
如MatLab函数返回的是N个变量值,其中有单个的数值、一维数组、二维数组等。
在Java中,使用Object[] rs=cmatlab.matlabfun(n , ....);接受返回的参数。其中rs[k]代表返回列表中第k个返回的变量的值。
如果rs[k]是单个数值,比如Double型。则使用下面的方法转换为Java中的Double型数值。
Object[] rs=cmatlab.matlabfun(n,a,b);//n指返回的变量个数,a、b代表输入的参数,如果是数值型,则可直接输入 MWNumericArray mw=(MWNumericArray)rs[k]; //0<=k<n,假如要取返回列表中第k个返回变量的值
double db=mw.getDouble(); //如果rs[k]是单个数值 double[] db=(mw.getDoubleData()); //如果rs[k]是一维double型数组 int[][] db=(int[][])(mw.toIntArray()); //如果rs[k]是二维int型数组
如果不确定使用哪个,或者希望使用其他类型的转换,可使用IDE的代码自动补全功能进行智能提示,可查看MatLab返回列表存储的类型。
给IDE添加代码自动补全功能可查看教程:
Eclipse自动补全功能轻松设置 || 不需要修改编辑任何文件
在Java中调用MatLab代码请查看上一篇博文:
请发表评论